在關(guān)于廣播規(guī)則的文件中,指出在以下任一情況下,兩個(gè)維度是兼容的:它們相等或其中之一是1通過顯示的一些示例,這一點(diǎn)變得很清楚,例如:A (4d array): 8 x 1 x 6 x 1B (3d array): 7 x 1 x 5Result (4d array): 8 x 7 x 6 x 5這似乎很清楚。但是,我無法找到一個(gè)具體的例子/解釋,為什么當(dāng)1d數(shù)組的形狀與2d數(shù)組的第二軸的形狀兼容時(shí),1D數(shù)組只能用2d數(shù)組廣播。例如:np.ones((2,3)) * np.arange(3)array([[0., 1., 2.], [0., 1., 2.]])正如預(yù)期的那樣,1d arange已跨行廣播。但是,如果我們這樣做:np.ones((3, 2)) * np.arange(3)值錯(cuò)誤: 操作數(shù)不能與形狀一起廣播 (3,2) (3,)我們收到不兼容形狀的錯(cuò)誤。這可能很簡單,但我只想知道哪個(gè)是正確的解釋。這背后的原因是,當(dāng)涉及到廣播規(guī)則時(shí),1d數(shù)組被視為列向量,因此沿著2d數(shù)組上的第二個(gè)軸檢查形狀兼容性?對(duì)于較大的陣列,是否始終根據(jù)較大 ndarray 上的最后一個(gè)軸進(jìn)行檢查?
1 回答

弒天下
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊
這背后的原因是,當(dāng)涉及到廣播規(guī)則時(shí),1d數(shù)組被視為列向量,因此沿著2d數(shù)組上的第二個(gè)軸檢查形狀兼容性?
相反,它們被視為行向量并垂直堆疊。您可以在相關(guān)文章中的此圖中看到它。
在您演示的情況下,您可以執(zhí)行相同的草圖:
A 3 x 2 # np.ones((3, 2))
B 2 x 3 # np.ones((2, 3))
C 3 # np.arange(3)
這里不起作用,但確實(shí)如此。這是因?yàn)檠氐谝粋€(gè)維度(即行)重復(fù)。您可以將缺失的尺寸想象為通過復(fù)制后面的尺寸來“調(diào)整大小”A*CB*CC
添加回答
舉報(bào)
0/150
提交
取消