gpt4 book ai didi

python - Numpy 广播数组

转载 作者:太空宇宙 更新时间:2023-11-04 01:19:33 24 4
gpt4 key购买 nike

当我试图理解 python 中的广播时,我遇到了形状不匹配错误。我知道这意味着我的数组在维度上不适合。我的代码基本上尝试对具有以下维度的数组执行以下操作:

(256,256,3)*(256,256)+(256,256)

我知道问题出在乘法上。我想知道是否有办法解决这个问题?我可以为乘法的 (256,256) 数组添加一个额外的维度吗?

最佳答案

假设

A.shape = (256,256,3)
B.shape = (256,256)
C.shape = (256,256)

NumPy broadcasting默认情况下在左边添加坐标轴,所以这将导致 BC 被广播到

B.shape = (256,256,256)
C.shape = (256,256,256)

显然这不起作用,也不是您想要的,因为与 A 的形状不匹配。

所以当你想在右边添加一个轴时,使用B[..., np.newaxis]C[..., np.newaxis]:

A*B[..., np.newaxis] + C[..., np.newaxis]

B[..., np.newaxis] 具有形状 (256,256,1),它被广播到 (256,256,3) 当与 A 相乘时,C[..., np.newaxis] 也是如此。


B[..., np.newaxis] 也可以写成 B[..., None] -- 因为 np.newaxisNone。它有点短,但意图可能不是很清楚。

关于python - Numpy 广播数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22156150/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com