如何将项添加到numpy数组中

goh*_*goh 69 python numpy

我需要完成以下任务:

从:

a = array([[1,3,4],[1,2,3]...[1,2,1]])
Run Code Online (Sandbox Code Playgroud)

(向每行添加一个元素):

a = array([[1,3,4,x],[1,2,3,x]...[1,2,1,x]])
Run Code Online (Sandbox Code Playgroud)

我试过像[n] =数组([1,3,4,x])这样的东西

但numpy抱怨形状不匹配.我尝试迭代a并将元素x附加到每个项目,但不会反映更改.

有关如何实现这一目标的任何想法?

Pau*_*aul 126

将数据附加到现有数组对于任何具有python经验的人来说都是很自然的事情.但是,如果您发现自己经常附加到大型数组,您很快就会发现NumPy不像python那样容易或有效地执行此操作list.你会发现每个"附加"动作都需要重新分配阵列内存和短期内存需求加倍.因此,对该问题的更一般的解决方案是尝试将数组分配为与算法的最终输出一样大.然后对该数组的子集(切片)执行所有操作.理想情况下,应尽量减少阵列的创建和销毁.

也就是说,这通常是不可避免的,执行此操作的功能是:

对于二维数组:

对于3-D阵列(以上加号):

对于ND阵列:

  • 另外值得一提的是快捷方式索引技巧c_和h_ (2认同)

eum*_*iro 13

import numpy as np
a = np.array([[1,3,4],[1,2,3],[1,2,1]])
b = np.array([10,20,30])
c = np.hstack((a, np.atleast_2d(b).T))
Run Code Online (Sandbox Code Playgroud)

回报c:

array([[ 1,  3,  4, 10],
       [ 1,  2,  3, 20],
       [ 1,  2,  1, 30]])
Run Code Online (Sandbox Code Playgroud)


chv*_*vck 7

一种方法(可能不是最好的)是使用新元素创建另一个数组并执行column_stack.即

>>>a = array([[1,3,4],[1,2,3]...[1,2,1]])
[[1 3 4]
 [1 2 3]
 [1 2 1]]

>>>b = array([1,2,3])
>>>column_stack((a,b))
array([[1, 3, 4, 1],
       [1, 2, 3, 2],
       [1, 2, 1, 3]])
Run Code Online (Sandbox Code Playgroud)