我有2個(gè)2d numpy數(shù)組,A的形狀為(i,j),B的形狀為(i,k),其中j >> k。我想定義一個(gè)新的3d數(shù)組C,這樣C中的每個(gè)元素都是A中每一列與整個(gè)矩陣B的廣播元素明智乘積。換句話說,作為普通的python循環(huán),我會(huì)這樣做for x in range(j):
C[x] = A[:,x]*B但是j在這種情況下非常大,如果我能夠使用Numpy的功能像上面的循環(huán)中那樣按元素定義ndarray C元素,它將對我有很多好處。
1 回答
倚天杖
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以像這樣使用廣播:
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)部為每一列進(jìn)行內(nèi)部操作的事實(shí)a,并[:, :, None]擴(kuò)展了維度以啟用廣播,如NumPy的廣播規(guī)則中所述。
添加回答
舉報(bào)
0/150
提交
取消
