長さa
のブールマスク配列n
があります。
a = np.array([True, True, True, False, False])
私はn
列を持つ2D配列を持っています:
b = np.array([[1,2,3,4,5], [1,2,3,4,5]])
たとえば、「True」値のみを含む新しい配列が必要です。
c = ([[1,2,3], [1,2,3]])
c = a * b
は、私が望まない偽の列に対しても「0」を含むため、機能しません。
c = np.delete(b, a, 1) does not work
助言がありますか?
おそらく次のようなものが必要です:
>>> a = np.array([True, True, True, False, False])
>>> b = np.array([[1,2,3,4,5], [1,2,3,4,5]])
>>> b[:,a]
array([[1, 2, 3],
[1, 2, 3]])
この種のインデックス付けが機能するためには、ndarray
ではなく、list
である必要があります。または、False
およびTrue
を0
および1
として解釈して、それらの列:
>>> b[:,[True, True, True, False, False]]
array([[2, 2, 2, 1, 1],
[2, 2, 2, 1, 1]])
numpy.ma
モジュールを使用して、np.ma.masked_array
関数を使用できます。
>>> x = np.array([1, 2, 3, -1, 5])
>>> mx = ma.masked_array(x, mask=[0, 0, 0, 1, 0])
masked_array(data=[1, 2, 3, --, 5], mask=[False, False, False, True, False], fill_value=999999)