我目前正在尝试将多个Numpy阵列附加到一起。基本上,我想要做的是从(1 x m)矩阵(技术上是矢量)开始,最后得到一个(n x m)矩阵。所以从n(1 x m)矩阵(向量)到一个(n x m)矩阵(如果这有意义)。这个的最终目标是使用numpy.savetxt()函数将矩阵写入csv文件中,这样我就会得到一个长度为m列的n列的csv文件。
这个问题是numpy.append()将向量一起附加到(1 x 2m)向量中。因此,让我们说a1和a2是Numpy数组,每个数组包含10000个元素。我将使用append函数将a2附加到a1中,同时创建一个名为a的新数组,其中包含a1和a2。
app.directive('contactAssociation', function () {
return {
templateUrl: 'contactAssociation.html',
restrict: 'E',
scope: {
contact:"=",
},
controller: contactAssociationController
};
我想要的是形状为
的形状a=np.append(a1, a2, axis=0)
a.shape
>>(20000,)
或更一般地
>>(2, 10000)
我该怎么办?请注意,我想继续将向量添加到数组中。谢谢你的时间!
答案 0 :(得分:1)
您可以使用numpy.column_stack
例如:
import numpy as np
a=np.array([1,2,3,4,5])
b=np.array([9,8,7,6,5])
c=np.column_stack((a,b)).T
print c
>>> array([[1, 2, 3, 4, 5],
[9, 8, 7, 6, 5]])
print a.shape,b.shape,c.shape
>>> (5,) (5,) (2, 5)
修改强>:
你可以继续添加这样的列:
d=np.array([2,2,2,2,2])
c=np.column_stack((c.T,d)).T
print c
>>> array([[1, 2, 3, 4, 5],
[9, 8, 7, 6, 5],
[2, 2, 2, 2, 2]])
print c.shape
>>> (3, 5)
答案 1 :(得分:0)
这应该有效
a=np.append(a1, a2, axis=0).reshape(2,10000)
a.shape
>>(2,10000)
答案 2 :(得分:0)
为了垂直合并数组,我会使用np.vstack
import numpy as np
np.vstack((a1,a2))
但是,从我的角度来看,numpy.array
不应该使用for
循环创建,并将新数组附加到旧数组。相反,您要先创建整个numpy.array
(nxm),然后将for
循环中的数据写入该数组,
data = np.zeros((n,m))
for i in range(n):
data[i] = ...
或者您首先使用append
将数组创建为普通的python列表,您可以将其最终转换为numpy.array
。
data = []
for i in range(n):
data.append(...)
data = np.asarray(data)