私はこのようなマトリックスを持っています
t = np.array([[1,2,3,'foo'],
[2,3,4,'bar'],
[5,6,7,'hello'],
[8,9,1,'bar']])
行に文字列「bar」が含まれるインデックスを取得したい
1次元配列
rows = np.where(t == 'bar')
インデックス[0,3]に続いてブロードキャストが表示されます:-
results = t[rows]
私に正しい行を与えるはずです
しかし、それを2D配列で動作させる方法を理解できません。
一般的なケースでは、検索文字列が任意の列にある場合、これを行うことができます:
>>> rows, cols = np.where(t == 'bar')
>>> t[rows]
array([['2', '3', '4', 'bar'],
['8', '9', '1', 'bar']],
dtype='|S11')
インデックスを作成するcolに配列をスライスする必要があります。
rows = np.where(t[:,3] == 'bar')
result = t1[rows]
これは次を返します:
[[2,3,4,'bar'],
[8,9,1,'bar']]