2016-08-03 13 views
6

私はいくつかの配列があり、ab、およびcとし、すべてに適用するためにmaskを作成しました。NumPyブール配列警告?

私はそのようにマスクしようとしています:maskbool配列です

a = a[mask]

を。それは私が確認したことは注目に値すること

len(a) = len(b) = len(c) = len(mask)

そして、私はむしろ不可解な響きの警告取得しています:

FutureWarning: in the future, boolean array-likes will be handled as a boolean array index

+1

このエラーは、0次元のブール値配列をインデックスとして使用しようとしていることを示しています。その操作のセマンティクスは変更の過程にあります。 'マスク'が 'len'を使ったものであることをどうやって確認しましたか? – user2357112

+0

待機、いいえ、間違った警告。あなたは何とか 'マスク 'のリストを手に入れましたか? – user2357112

答えて

13

偽== 0、および真== 1の場合をごマスクは、リストではなく、ndarray、あなたには、いくつかの予期しない動作を得ることができます。

>>> a = np.array([1,2,3]) 
>>> mask_list = [True, False, True] 
>>> a[mask_list] 
__main__:1: FutureWarning: in the future, boolean array-likes will be handled as a boolean array index 
array([2, 1, 2]) 

この配列は、で構成され[1]、[ 0]、および[1]、ただ一方

>>> a[np.array([1,0,1])] 
array([2, 1, 2]) 

のように:警告は、おそらく何である(最終的にa[mask_list]はあなたa[mask_array]と同じを与えることを言っている

>>> mask_array = np.array(mask_list) 
>>> mask_array 
array([ True, False, True], dtype=bool) 
>>> a[mask_array] 
array([1, 3]) 

+0

ああ、ありがとうございます。 'mask = np.array(mask_expression、dtype = bool)'を使ってリストをnumpy配列にキャストすることで修正されました。 – Anonymous

関連する問題