我目前正在尝试将多个Numpy数组附加在一起。基本上,我想做的是从(1 x m)矩阵(技术上说是一个向量)开始,最后得到(n x m)矩阵。从n (1 x m)个矩阵(向量)到1 (n x m)个矩阵(如果这有意义的话)这样做的最终目标是使用numpy. savetext()函数将矩阵写入csv-file中,因此我将最终得到一个具有n列,长度为m的csv-file。
这样做的问题是numpy.append()将向量附加在一起成为一个(1 x 2m)向量。假设a1和a2是Numpy数组,每个都有10000个元素。我将使用append函数将a2添加到a1中,同时创建一个名为a的新数组,其中包含a1和a2。
a=np.append(a1, a2, axis=0)
a.shape
>>(20000,)
我想要的是形状的形式为
>>(2, 10000)
或更普遍的
>>(n, m)
我该怎么办?请注意,我想继续将向量添加到数组中。谢谢你的时间!
您可以使用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)
应该可以了
a=np.append(a1, a2, axis=0).reshape(2,10000)
a.shape
>>(2,10000)
为了垂直合并数组,我将使用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)