【问题标题】:How to add an element at the index using numpy in python如何在python中使用numpy在索引处添加元素
【发布时间】:2019-12-09 07:32:29
【问题描述】:

我是 python 新手,这里有一个numpy array。现在,在这,

我正在尝试在数组的索引中添加一个元素。

for x in index:
    output_result[x:x] = [300]

但它没有被添加,索引是位置。我想在哪里添加那个元素。那么,任何人都可以帮助解决这个问题吗?

【问题讨论】:

  • 您可以使用np.insert 在特定索引处添加值

标签: python arrays pandas numpy


【解决方案1】:

您是否正在寻找类似的东西:

import numpy as np

a = np.zeros(10)  # create numpy array with ten zeros
a = np.where(a == 0, 300, a)  # substitute 300 where there are zeros in array - **i assume this is what you need**

print(a)  # print generated array
print(type(a))  # print data type to show a numpy array was generated

还是要“附加”一个新元素?

【讨论】:

  • 在使用 np.where 时没有理由使用该循环
  • 你完全正确,这是我最近提交的一项更复杂的任务,其中每个元素都必须用不同的随机数填充 - 我将其编辑掉。谢谢! :)
【解决方案2】:

使用 Python 列表,您可以插入一个值:

In [104]: alist = [0,1,2,3]                                                     
In [105]: alist[1:1]=[300]                                                      
In [106]: alist                                                                 
Out[106]: [0, 300, 1, 2, 3]

但这不适用于ndarray。数组大小是固定的。您可以做的最好的事情是创建一个新数组,其中包含原始值和新值。

np.insert 是一个可以做到这一点的函数。由于该操作不是特别有效,因此最好一次进行一整套插入,而不是反复进行。

In [108]: np.insert(np.arange(4),1,300)                                         
Out[108]: array([  0, 300,   1,   2,   3])
In [109]: np.insert(np.arange(4),[1,2],[300,400])                               
Out[109]: array([  0, 300,   1, 400,   2,   3])

(即使使用列表,迭代插入也可能很棘手,因为每次插入都会改变列表的大小。插入点必须考虑到这一点(除非您从末尾进行迭代)。)

【讨论】:

    猜你喜欢
    • 2021-06-06
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多