添加追加numpy数组



我目前正在尝试将多个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)