添加附加的numpy数组

时间:2015-06-09 11:52:26

标签: python arrays numpy matrix

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

我该怎么办?请注意,我想继续将向量添加到数组中。谢谢你的时间!

3 个答案:

答案 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)