根据numpy文档:返回一个新的数组,沿着一个轴删除子数组。
我面临一个简单的问题,我必须从二维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]]