如何在2个不同的二维数组(Python/numpy)上执行广播



如果有两个numpy数组,两个数组都是不同形状的2-D:x.shape=(2,2(y.shape=(3.2(

如何使用numpy执行广播以执行以下操作:x*y,x-y

谢谢。

由于您希望使用不同形状和大小的数组,因此在调整较小数组的大小时需要提供某种默认值,在这种情况下,我将用零填充它。其想法是将较小的阵列转换为与较大的阵列相同的形状,以便numpy可以进行计算,例如:

import numpy as np
# sample data
rows = 2
cols = 2
a = np.array(np.arange(rows * cols).reshape((rows, cols)))
rows += 1
b = np.array(np.arange(rows * cols).reshape((rows, cols)))
print(a)
>>>
[[0 1]
[2 3]]
print(b)
>>> 
[[0 1]
[2 3]
[4 5]]

现在你可以调整较小的一个:

if a.size < b.size:
a.resize(b.shape)  # in-place resizing adding zeros 
else:
b.resize(a.shape)
print(a)  # with extra zeros
>>>  
[[0 1]
[2 3]
[0 0]]

然后进行计算:

c = a * b
print(c)
>>> 
[[0 1]
[4 9]
[0 0]]
d = a - b
print(d)
>>>
[[ 0  0]
[ 0  0]
[-4 -5]]

最新更新