gpt4 book ai didi

python - 从 numpy 数组中删除一些元素

转载 作者:太空狗 更新时间:2023-10-29 22:04:04 24 4
gpt4 key购买 nike

一个有趣的问题:

我想从一个 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

为什么只在删除最后一个元素时才会发生此错误?执行此类任务的正确方法是什么?

最佳答案

请记住,np.delete(arr, ind) 删除索引 ind 处的元素,而不是具有该值的元素。

这意味着当你删除东西时,数组会变短。所以你开始

values = [0,1,2,3,4,5]
np.delete(values, 3)
[0,1,2,4,5] #deleted element 3 so now only 5 elements in the list
#tries to delete the element at the fifth index but the array indices only go from 0-4
np.delete(values, 5)

解决问题的方法之一是按降序对要删除的索引进行排序(如果您确实要删除数组)。

inds_to_delete = sorted([3,1,5], reverse=True) # [5,3,1]
# then delete in order of largest to smallest ind

或者:

inds_to_keep = np.array([0,2,4])
values = values[inds_to_keep]

关于python - 从 numpy 数组中删除一些元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35672061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com