data 是一个二维数组,如:
In [54]: data=np.arange(-5,5).reshape(5,2)
In [55]: data
Out[55]:
array([[-5, -4],
[-3, -2],
[-1, 0],
[ 1, 2],
[ 3, 4]])
In [56]: ab=abs(data[:,1])
concatenate 2 个数组有多种方法。在这种情况下,data 是 2d,ab 是 1d,因此您必须采取一些步骤来确保它们都是 2d。 np.column_stack 为我们做这件事。
In [58]: np.column_stack((data,ab))
Out[58]:
array([[-5, -4, 4],
[-3, -2, 2],
[-1, 0, 0],
[ 1, 2, 2],
[ 3, 4, 4]])
通过对索引稍作更改,我们可以将 ab 从一开始设为列数组,并在第二轴上简单地创建 concatenate:
ab=abs(data[:,[1]])
np.concatenate((data,ab),axis=1)
===================
与您的tolist 相同的数字会产生c 类似
In [72]: [ab.tolist()]+[data.tolist()]
Out[72]: [[4, 2, 0, 2, 4], [[-5, -4], [-3, -2], [-1, 0], [1, 2], [3, 4]]]
这对array 来说不是很好的输入。
要走列表路线,您需要对 zip 进行迭代:
In [86]: list(zip(data,ab))
Out[86]:
[(array([-5, -4]), 4),
(array([-3, -2]), 2),
(array([-1, 0]), 0),
(array([1, 2]), 2),
(array([3, 4]), 4)]
In [87]: c=[]
In [88]: for i,j in zip(data,ab):
c.append(i.tolist()+[j])
....:
In [89]: c
Out[89]: [[-5, -4, 4], [-3, -2, 2], [-1, 0, 0], [1, 2, 2], [3, 4, 4]]
In [90]: np.array(c)
Out[90]:
array([[-5, -4, 4],
[-3, -2, 2],
[-1, 0, 0],
[ 1, 2, 2],
[ 3, 4, 4]])
显然这会比数组连接要慢,但研究这可能有助于您理解数组和列表。