0

私は 2 次元配列と 1 次元配列を持っており、1 次元配列の各要素 x 2 次元配列列の各要素を乗算する必要があります。これは基本的には行列の乗算ですが、numpy は 1 次元配列のため行列の乗算を許可しません。これは、numpy では行列が本質的に 2 次元であるためです。どうすればこの問題を回避できますか? これは私が欲しいものの例です:

FrMtx = np.zeros(shape=(24,24)) #2d array
elem = np.zeros(24, dtype=float) #1d array
Result = np.zeros(shape=(24,24), dtype=float) #2d array to store results

some_loop to increment i:
    some_other_loop to increment j:
        Result[i][j] = (FrMtx[i][j] x elem[j])

多くの努力により、次のようなエラーが発生しましたarrays used as indices must be of integer or boolean type

4

2 に答える 2

0

配列を乗算するだけでよいはずですが、行列が正方であるため、配列が乗算される「方向」はすぐにはわかりません。どの軸が乗算されているかをより明確にするために、同じ次元数を持つ配列を常に乗算すると役立つことがわかりました。

たとえば、列を乗算するには:

mtx = np.zeros(shape=(5,7))
col = np.zeros(shape=(5,))
result = mtx * col.reshape((5, 1))  

col を (5,1) に再形成することにより、mtx の軸 0 が col の軸 0 に対して乗算されることが保証されます。行を乗算するには:

mtx = np.zeros(shape=(5,7))
row = np.zeros(shape=(7,))
result = mtx * row.reshape((1, 7))

これにより、mtx の軸 1 が行の軸 0 で乗算されることが保証されます。

于 2012-07-12T21:37:25.980 に答える