numpy 划分的问题
Problems with numpy divide
我正在尝试使用 numpy divide 对数组执行除法,我有两个数组,我将其命名如下:
log_norm_images = np.divide(diff_images, b_0)
我收到错误:
operands could not be broadcast together with shapes (96,96,55,64) (96,96,55).
这些分别是ndarrays的形状。
现在,在我的 python shell 中,我进行以下测试:
x = np.random.rand((100, 100, 100))
y = np.random.rand((100, 100))
和
np.divide(x, y)
运行没有任何错误。我不确定为什么这行得通,而不是我的情况。
您正在尝试同时广播 4 维数组和 3 维数组。基于 NumPy 的广播行为,只有当每个对应维度的维度相等或其中之一为 1 时,这才会成功。这就是它不匹配的原因:
Your 4-D array: 96 x 96 x 55 x 64
Your 3-D array: 96 x 96 x 55
^ ^
Mismatching dimensions
如果您的 pad out/reshape 您的 3-D 阵列(我想它不再是 3-D)明确具有形状 (96, 96, 55, 1),您的操作可能会起作用。然后它看起来像:
Your 4-D array: 96 x 96 x 55 x 64
Your 3-D array: 96 x 96 x 55 x 1
^
This is acceptable for the broadcast behavior
SciPy/NumPy 文档的 link 对此进行了更详细的介绍:
http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html
我正在尝试使用 numpy divide 对数组执行除法,我有两个数组,我将其命名如下:
log_norm_images = np.divide(diff_images, b_0)
我收到错误:
operands could not be broadcast together with shapes (96,96,55,64) (96,96,55).
这些分别是ndarrays的形状。
现在,在我的 python shell 中,我进行以下测试:
x = np.random.rand((100, 100, 100))
y = np.random.rand((100, 100))
和
np.divide(x, y)
运行没有任何错误。我不确定为什么这行得通,而不是我的情况。
您正在尝试同时广播 4 维数组和 3 维数组。基于 NumPy 的广播行为,只有当每个对应维度的维度相等或其中之一为 1 时,这才会成功。这就是它不匹配的原因:
Your 4-D array: 96 x 96 x 55 x 64
Your 3-D array: 96 x 96 x 55
^ ^
Mismatching dimensions
如果您的 pad out/reshape 您的 3-D 阵列(我想它不再是 3-D)明确具有形状 (96, 96, 55, 1),您的操作可能会起作用。然后它看起来像:
Your 4-D array: 96 x 96 x 55 x 64
Your 3-D array: 96 x 96 x 55 x 1
^
This is acceptable for the broadcast behavior
SciPy/NumPy 文档的 link 对此进行了更详细的介绍:
http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html