将一个 numpy 数组添加到另一个具有不同维度的数组

Adding a numpy array to another which has different dimensions

我有一个空的 numpy 数组(我们称它为 a),例如大小为 (1200, 1000)

有几个 numpy 数组,我想对它们求和并将它们保存在数组 a.

这些数组的大小(b_i)是(1200, y),而ymax=1000

简单写一段代码如:

a = a + b_i

由于第二个维度不匹配而无法正常工作。

我该如何解决?

我对此的唯一想法是开始获取 a 的 sub-array,其维度与 b_i 数组相匹配,然后以这种方式添加它。所以像这样:

import numpy as np

a = np.zeros((12, 10))
b_1 = np.random.randint(1, 10, size=(12, 5))
b_2 = np.random.randint(1, 10, size=(12, 7))
b_3 = np.random.randint(1, 10, size=(12, 9))
arrs = [b_1, b_2, b_3]

for arr in arrs:
    a[:, :arr.shape[1]] += arr

或者,正如@BlackRaven 建议的那样,您可以用零填充 b_i 以使其与 a.

的形状相同

如果您只想连接数组:

a = np.ones((1200,1000))
b = np.ones((1200, 500))
c = np.concatenate((a, b), axis=1)
c.shape # == (1200, 1500)

如果你想要逐元素相加,那么重塑 b 使其具有与 a

相同的维度
a = np.ones((1200,1000))
b = np.ones((1200, 500))
b_pad = np.zeros(a.shape)
b_pad[:b.shape[0],:b.shape[1]] = b
a + b_pad
array([[2., 2., 2., ..., 1., 1., 1.],
       [2., 2., 2., ..., 1., 1., 1.],
       [2., 2., 2., ..., 1., 1., 1.],
       ...,
       [2., 2., 2., ..., 1., 1., 1.],
       [2., 2., 2., ..., 1., 1., 1.],
       [2., 2., 2., ..., 1., 1., 1.]])

如果你想要一个可重用的函数,那么看看这个问题