我计算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?这个过程也可以以更好的方式完成吗?
答案 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]])