2016-02-11 13 views
6

私は 'マスク'(ブール値)の2次元配列を持っています。これを座標のリストに変換したいと思います。それを行うための適切な方法は何ですか?入力はこのようなものになるだろうx、y座標のリストにマスク(boolean)配列を変換する

[[False,False,True], 
[False,True,False]] 

と上記の入力を与え、出力は次のようになります。

[(0,2),(1,1)] 

答えて

5

使用

  • np.where次の場合に使用することができます他の配列をあとでインデックス化する必要があります。しかし結果は、あなたが指定したものとはかなり異なります。
  • np.argwhere:指定した結果が必要な場合。しかし、この結果は別の配列の索引付けには使用できません。

いくつかのサンプルコード:

import numpy as np 
a = np.array([[False,False,True], 
       [False,True,False]]) 
np.argwhere(a) # equivalent to checking a == True 
#array([[0, 2], 
#  [1, 1]], dtype=int64) 
np.where(a) # equivalent to checking a == True 
#(array([0, 1], dtype=int64), array([2, 1], dtype=int64)) 

そして、あなたはリストにあなたの結果を変換したい場合はndarray.tolist()方法があります。だからnp.argwhere(a).tolist()に電話することができます。

関連する問題