我是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)]
你有什么想法吗?
答案 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])
因此,为了达到您想要的效果,首先必须为您的向量a
和b
添加另一个维度
>>> 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]])