2015-08-24 131 views
0

我想将numpy阵列中的值添加到numpy矩阵的特定行中的值。将阵列的值添加到numpy矩阵的行中

考虑:

A = [[0, 0], [0, 0]] 

b = [1, 1] 

我想在A. B加入A值的第一行中的预期结果是:

[[1, 1], [0, 0]] 

我使用 “+” 操作符尝试过,但出现错误:

>>> import numpy 
>>> a = numpy.zeros(shape=(2,2)) 
>>> a 
array([[ 0., 0.], 
     [ 0., 0.]]) 
>>> b = numpy.ones(shape=(1,2)) 
>>> b 
array([[ 1., 1.]]) 

>>> a[0, :] += b 

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: non-broadcastable output operand with shape (2,) doesn't match the broadcast shape (1,2) 

这样做的最佳方法是什么?

回答

2

b = [1, 1]b = [[1, 1]]之间的差异。 a[0, :] += b失败,因为在这种情况下无法播放。

b如果可以包含可变数量行的话,可以使用b的长度取的a切片和添加b到它。

>>> a = numpy.zeros(shape=(2,2)) 
>>> b = numpy.ones(shape=(1,2)) 
>>> a[:len(b)] += b 
>>> a 
array([[ 1., 1.], 
     [ 0., 0.]]) 

或者,如果b包含那么只有一行:

>>> a = numpy.zeros(shape=(2,2)) 
>>> a[0] += b[0] 
>>> a 
array([[ 1., 1.], 
     [ 0., 0.]]) 
0
a = np.zeros((2 , 2)) 
b = np.ones((1 ,2)) 
np.concatenate([b , np.array([a[0]])])