4

フロートの 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]。ブロードキャストが期待どおりに機能しないのはなぜですか?

4

1 に答える 1