【问题标题】:Delete specific position from numpy array从 numpy 数组中删除特定位置
【发布时间】:2025-12-13 04:05:02
【问题描述】:

我有一些 numpy 数组,第一个位置是 None。

a = [None, 1, 2, 3, 4, 5]
b = [None, 4, 3, 2, 1, 5]

我希望它变成:

[1, 2, 3, 4, 5]
[4, 3, 2, 1, 5]

编辑:我知道我能做到:

a = [a is not None]

但就我而言,我想专门删除 a[0]

试过了:

a = np.delete(a, 0)

得到:

AttributeError: int' object has no attribute 'delete'

【问题讨论】:

标签: python arrays numpy


【解决方案1】:

Numpy 只是有一个漂亮的方法。使用.delete()

例子:

n = [None, 1, 2, 3, 4, 5]
n = np.delete(n, 0)

EDIT:np 代表 numpy。使用:import numpy as np

【讨论】:

  • AttributeError: "Int" 对象没有属性 'delete'
【解决方案2】:

a 是一个列表:

In [61]: a = [None, 1,2,3,4]
In [62]: a
Out[62]: [None, 1, 2, 3, 4]
In [63]: a[1:]               # standard list slicing
Out[63]: [1, 2, 3, 4]

如果我们有一个数组,我们可以做同样的切片:

In [64]: A = np.array(a)
In [65]: A
Out[65]: array([None, 1, 2, 3, 4], dtype=object)
In [66]: A[1:]
Out[66]: array([1, 2, 3, 4], dtype=object)
In [67]: A[1:].astype(int)
Out[67]: array([1, 2, 3, 4])

None 的数组是对象 dtype,类似于列表。

通过列表,我们还可以del(并删除任何选定的项目):

In [68]: a
Out[68]: [None, 1, 2, 3, 4]
In [69]: del a[0]
In [70]: a
Out[70]: [1, 2, 3, 4]

np.delete 对数组做了类似的事情,虽然效率不高:

In [72]: np.delete(A, 0)
Out[72]: array([1, 2, 3, 4], dtype=object)

如果np.delete 不适合你,那是因为你搞砸了np

【讨论】:

  • 切片解决了!至于 np.delete,当我在某个随机数组上测试它时它起作用了,但由于某种原因它在我的程序数组中不起作用..无论如何 ty!