一个有趣的问题:
我想从一个 numpy 数组中删除一些元素,但就像下面简化的示例代码一样,如果不删除最后一个元素它就可以工作,但是如果我们想删除最后一个元素它就会失败。下面的代码工作正常:
import numpy as np
values = np.array([0,1,2,3,4,5])
print values
for i in [3,4,1]:
values = np.delete(values,i)
print values
输出是:
[0 1 2 3 4 5]
[0 2 4]
如果我们只将 4 更改为 5,那么它将失败:
import numpy as np
values = np.array([0,1,2,3,4,5])
print values
for i in [3,5,1]:
values = np.delete(values,i)
print values
错误信息:
IndexError: index 5 is out of bounds for axis 0 with size 5
为什么只在删除最后一个元素时才会发生此错误?执行此类任务的正确方法是什么?
原文由 lucky1928 发布,翻译遵循 CC BY-SA 4.0 许可协议
请记住, np.delete(arr, ind) 删除索引处的元素
ind
而不是具有该值的元素。这意味着当你删除东西时,数组会变短。所以你开始
解决问题的方法之一是按降序对要删除的索引进行排序(如果您确实要删除数组)。
或者: