我有2個2d numpy數(shù)組,A的形狀為(i,j),B的形狀為(i,k),其中j >> k。我想定義一個新的3d數(shù)組C,這樣C中的每個元素都是A中每一列與整個矩陣B的廣播元素明智乘積。換句話說,作為普通的python循環(huán),我會這樣做for x in range(j):
C[x] = A[:,x]*B但是j在這種情況下非常大,如果我能夠使用Numpy的功能像上面的循環(huán)中那樣按元素定義ndarray C元素,它將對我有很多好處。
1 回答

倚天杖
TA貢獻1828條經(jīng)驗 獲得超3個贊
您可以像這樣使用廣播:
a.T[:, :, None] * b
例子:
import numpy as np
np.random.seed(444)
i, j, k = 2, 10, 3
a = np.random.randn(i, j)
b = np.random.randn(i, k)
c = a.T[:, :, None] * b
print(c.shape)
# (10, 2, 3)
移置源于您要在內(nèi)部為每一列進行內(nèi)部操作的事實a,并[:, :, None]擴展了維度以啟用廣播,如NumPy的廣播規(guī)則中所述。
添加回答
舉報
0/150
提交
取消