フロートの ndarray X がある状況があり、100x10 としましょう。最初の列のいくつかの条件を調べて、形状 100x1 のブール型 ndarray B を作成したいと考えています。次に、B を X へのインデックスとして使用して、True が配置されている場所の値を引き出します。ただし、BI の True ごとに、X の行全体を引き出したいと考えています。B は 100x10 の形状にブロードキャストされるため、これは自動的に機能すると思いました。ただし、この方法では機能しないようです。2x2 と 2x1 の ndarray を使用した例を次に示します。
a = np.array([True, False])
a.shape = (2,1)
b = np.array([1, 2, 3, 4])
b.shape = (2,2)
print(a)
print(b)
print(b[a])
これは印刷します
[[True]
[False]]
[[ 1 2 ]
[ 3 4 ]]
[1]
印刷されると思っていました[1 2]
。ブロードキャストが期待どおりに機能しないのはなぜですか?