将一个 numpy 数组添加到另一个具有不同维度的数组
Adding a numpy array to another which has different dimensions
我有一个空的 numpy 数组(我们称它为 a
),例如大小为 (1200, 1000)
。
有几个 numpy 数组,我想对它们求和并将它们保存在数组 a
.
这些数组的大小(b_i
)是(1200, y)
,而y
是max=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.]])
如果你想要一个可重用的函数,那么看看这个问题
我有一个空的 numpy 数组(我们称它为 a
),例如大小为 (1200, 1000)
。
有几个 numpy 数组,我想对它们求和并将它们保存在数组 a
.
这些数组的大小(b_i
)是(1200, y)
,而y
是max=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.]])
如果你想要一个可重用的函数,那么看看这个问题