1

特定の操作を分離するために、ベクターに沿ってブール値の 1D 配列をブロードキャストしようとしています。

たとえば、ブール配列が次の場合:

b = array([True False False True])

np.shape(b) = (4,)

行ごとの比較を行いたい私のマトリックスは、次の形式です。

A = array([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0], [10.0, 11.0, 12.0]])

np.shape(A) = (4, 3)

私が望む最終結果は次のようになります。

C = b * A (row-wise comparison) 

C = array([[1.0, 2.0, 3.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [10.0, 11.0, 12.0]])

これはスライスによって実行できることを認識していますが、論理配列を使用して速度を向上させる必要があります。ブール値ベクトルを「拡張」して、行全体で機能する方法はありますか?

アイデアは、関数をすべて1行で計算できるようにすることです。

D = b * A * (some operation done over all vectors) + ~b * A * (some different operation done over all vectors)

ありがとうございました!

4

1 に答える 1

2

2 番目の軸を 1 次元 ( の次元) として保持するように拡張bし、 を乗算します。したがって、フードの下ではof と同じ形状にブロードキャストされ、要素ごとの乗算が実行されます。2Dlength = 1AbA

したがって、ベクトル化された解は次のようになります -

A*b[:,None]
于 2016-10-27T08:11:15.233 に答える