如何将项添加到numpy数组中

2024-09-07 12:34:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要完成以下任务:

发件人:

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

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

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

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

但努比抱怨形状不匹配。我尝试遍历a并将元素x附加到每个项,但更改没有反映出来。

你对我如何做到这一点有什么想法吗?


Tags: 元素数组事情array形状
3条回答
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))

返回c

array([[ 1,  3,  4, 10],
       [ 1,  2,  3, 20],
       [ 1,  2,  1, 30]])

对于有python经验的人来说,将数据附加到现有数组是很自然的事情。但是,如果您发现自己经常附加到大型数组中,那么您将很快发现NumPy并不像pythonlist那样容易或高效地执行此操作。您会发现,每一个“append”操作都需要重新分配数组内存和短期的内存需求翻倍。所以,这个问题的更一般的解决方案是尝试将数组分配为与算法的最终输出一样大。然后对该数组的子集合(slices)执行所有操作。理想情况下,阵列的创建和销毁应该最小化。

也就是说,这通常是不可避免的,而实现这一点的功能是:

对于二维阵列:

对于三维阵列(以上加上):

对于N-D阵列:

一种方法(可能不是最好的)是用新元素和do column_stack创建另一个数组。i、 e

>>>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]])

相关问题 更多 >