Numpy.delete()函数没有正确删除索引处的元素



我面临一个简单的问题,我必须从二维NumPy数组(如m)中删除元素。当我尝试用delete()函数删除某个索引处的元素时,它只是不执行删除。

import numpy as np
m = np.array([[1], [1], [3]])
np.delete(m, 2)
print(m)

这段代码应该输出[[1], [1]],因为它正在删除索引2处的元素。但它给出的实际输出是相同的原始数组[[1] [1] [3]]

  • 为什么这个功能不工作?
  • 在不将NumPy数组转换为Python列表的情况下,我如何解决它?

这是因为delete函数,返回更改数组的副本。
你需要这样做:

import numpy as np
m = np.array([[1], [1], [3]])
m = np.delete(m, 2)
print(m)

根据numpy文档:返回一个新的数组,沿着一个轴删除子数组。

参考numpy文档查看np.delete:-

返回out - narrayarr的副本,删除obj指定的元素。请注意,删除不会就地发生。如果axis为None, out是一个扁平数组.

正确代码是

import numpy as np
m = np.array([[1], [1], [3]])
m = np.delete(m, 2,0)
print(m)

输出:

[[1][1]]

最新更新