将1D numpy.array([])转换为numpy.array([[]])

时间:2017-03-30 12:33:25

标签: python numpy

我计算2D数组中每行的结果。

import numpy as np
xyz = np.array([[1, 2, 100],[2, 5, 100]])
resultcolumn1 = (xyz[:,0]+xyz[:,1])*xyz[:,2]
>>array([300, 700])
>>type 'numpy.ndarray'>

但是当我尝试将此结果向量添加到2D数组的其余部分作为列

print np.concatenate((xyz, resultcolumn1.T), axis=1)

我收到此错误:

  

ValueError:所有输入数组必须具有相同的维数。

使用双括号声明相同的向量。作品:

resultcolumn2=np.array([[300, 700]])
>>>array([[300, 700]])
>>><type 'numpy.ndarray'>
np.concatenate((xyz, resultcolumn2.T), axis=1)
>>>[[  1   2 100 300]
    [  2   5 100 700]]

如何更改resultcolumn1以匹配resultcolumn2?这个过程也可以以更好的方式完成吗?

1 个答案:

答案 0 :(得分:1)

只需添加额外的维度:

>>> np.concatenate((xyz, resultcolumn1.T[..., None]), axis=1)
array([[  1,   2, 100, 300],
       [  2,   5, 100, 700]])

另外,请注意,对于1d数组,.T(即转置)不执行任何操作,因此您只需删除它:

>>> np.concatenate((xyz, resultcolumn1[..., None]), axis=1)
array([[  1,   2, 100, 300],
       [  2,   5, 100, 700]])