将数组添加到另一个Python的末尾

时间:2015-11-30 15:45:19

标签: python arrays numpy

我是python的新手,我一直面临着将多个数组放入另一个数组的任务,这是一个循环内部。 所以,如果你有

a = np.array([2,3,4,3,4,4,5,3,2,3,4])

b = np.array([1,1,1,1,1,2,23,2,3,3,3])

c = np.array([])

并想要结果

c = [[2,3,4,3,4,4,5,3,2,3,4],
     [1,1,1,1,1,2,23,2,3,3,3]]

所以,如果我c[0,:],我会得到[2,3,4,3,4,4,5,3,2,3,4] 我尝试使用c = [c, np.array(a)],然后在下一次迭代中获得c = [c, np.array(b)] 但是我c[0,:]我收到错误消息list indices must be integers not tuples

编辑:

当我打印出c时,它会[array([2,3,4,3,4,4,5,3,2,3,4],dtype = unit8)]

你有什么想法吗?

4 个答案:

答案 0 :(得分:4)

In [10]: np.vstack((a,b))
Out[10]:
array([[ 2,  3,  4,  3,  4,  4,  5,  3,  2,  3,  4],
       [ 1,  1,  1,  1,  1,  2, 23,  2,  3,  3,  3]])

编辑:这是一个在循环中使用它来逐步构建矩阵的示例:

In [14]: c = np.random.randint(0, 10, 10)

In [15]: c
Out[15]: array([9, 5, 9, 7, 3, 0, 1, 9, 2, 0])

In [16]: for _ in xrange(10):
   ....:     c = np.vstack((c, np.random.randint(0, 10, 10)))
   ....:

In [17]: c
Out[17]:
array([[9, 5, 9, 7, 3, 0, 1, 9, 2, 0],
       [0, 8, 1, 9, 7, 5, 4, 2, 1, 2],
       [2, 1, 4, 2, 9, 6, 7, 1, 3, 2],
       [6, 0, 7, 9, 1, 9, 8, 5, 9, 8],
       [8, 1, 0, 9, 6, 6, 6, 4, 8, 5],
       [0, 0, 5, 0, 6, 9, 9, 4, 6, 9],
       [4, 0, 9, 8, 6, 0, 2, 2, 7, 0],
       [1, 3, 4, 8, 2, 2, 8, 7, 7, 7],
       [0, 0, 4, 8, 3, 6, 5, 6, 5, 7],
       [7, 1, 3, 8, 6, 0, 0, 3, 9, 0],
       [8, 5, 7, 4, 7, 2, 4, 8, 6, 7]])

答案 1 :(得分:3)

大多数numpythonic方式使用np.array

>>> c = np.array((a,b))
>>> 
>>> c
array([[ 2,  3,  4,  3,  4,  4,  5,  3,  2,  3,  4],
       [ 1,  1,  1,  1,  1,  2, 23,  2,  3,  3,  3]])

答案 2 :(得分:0)

你可以试试这个:

>>> c = [list(a), list(b)]
>>> c
[[2, 3, 4, 3, 4, 4, 5, 3, 2, 3, 4], [1, 1, 1, 1, 1, 2, 23, 2, 3, 3, 3]]

答案 3 :(得分:-1)

您可以在numpy中连接数组。为此,除了连接方向外,它们在所有维度上必须具有相同的大小。

如果你只是说

>>> c = np.concatenate([a,b])

你会得到

>>> c
array([ 2,  3,  4,  3,  4,  4,  5,  3,  2,  3,  4,  1,  1,  1,  1,  1,  2,
   23,  2,  3,  3,  3])

因此,为了达到您想要的效果,首先必须为您的向量ab添加另一个维度

>>> a[None,:] 
array([[2, 3, 4, 3, 4, 4, 5, 3, 2, 3, 4]])

或等效

>>> a[np.newaxis,:]
array([[2, 3, 4, 3, 4, 4, 5, 3, 2, 3, 4]])

所以你可以做到以下几点:

>>> c = np.concatenate([a[None,:],b[None,:]],axis = 0)
>>> c
array([[ 2,  3,  4,  3,  4,  4,  5,  3,  2,  3,  4],
   [ 1,  1,  1,  1,  1,  2, 23,  2,  3,  3,  3]])