我有一个数组A = [1,2,3]和一个B =零(3,5)
我想将A [0]添加到B的第一行,[1]添加到第二行等等。
最后我需要以下结果:
B =
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
a = np.array([1,2,3])
b = np.zeros((3,5))
由于我收到错误,因此无法执行+ b。我可以使用for循环来做到这一点:
for i in range ( len(a) ):
b[i] += a[i]
但是这会增加我对代码添加的约束。
我们可以使用numpy操作执行此操作吗?
答案 0 :(得分:0)
试试这个Numpy
广播方法。
a.reshape(1,-1).T+b
array([[ 1., 1., 1., 1., 1.],
[ 2., 2., 2., 2., 2.],
[ 3., 3., 3., 3., 3.]])
如果你想在intergers
中使用它:
(a.reshape(1,-1).T+b).astype(int)
array([[1, 1, 1, 1, 1],
[2, 2, 2, 2, 2],
[3, 3, 3, 3, 3]])
答案 1 :(得分:0)
这个怎么样?
In [53]: A = np.array([1,2,3])
In [54]: B = np.zeros((3,5))
In [55]: A = A[:, None]
In [56]: A
Out[56]:
array([[1],
[2],
[3]])
In [57]: B
Out[57]:
array([[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.]])
In [58]: A + B
Out[58]:
array([[ 1., 1., 1., 1., 1.],
[ 2., 2., 2., 2., 2.],
[ 3., 3., 3., 3., 3.]])
对于整数数组,结果为:
In [59]: np.asarray(A + B, dtype=np.int)
Out[59]:
array([[1, 1, 1, 1, 1],
[2, 2, 2, 2, 2],
[3, 3, 3, 3, 3]])