gpt4 book ai didi

python - 在其内容循环中删除顺序NumPy数组索引

转载 作者:行者123 更新时间:2023-12-02 16:49:47 24 4
gpt4 key购买 nike

我正在遍历OpenCV行的NumPy(nd)数组。我要删除所有垂直度超过8度的线。我意识到numpy数组是不可变的,我在代码中所做的事情是不正确的,但它展示了我正在尝试做的事情的想法;

index = 0
for line in self.lines[0]:
if (line[1]*180)/np.pi > 8:
self.lines[0] = np.delete(self.lines[0], index, axis=0)
index+=1

如何删除这些NumPy数组索引?

谢谢!

最佳答案

在该数组上进行迭代时,不能删除数组索引。它将给出错误的结果。假设您在第5次迭代中,并且该索引满足if条件并且需要删除,但是如果我们删除它,它将导致索引6处的数组元素位于索引5处,而选择的下一个元素将是7,删除后该元素将成为索引6因此,从不检查条件,即最初在索引6处(即在删除之前)没有元素的条件。

处理此问题的基本思路是将这些索引附加到列表中,并在lope外删除它们。所以你的代码是:

index = 0
idx = []
for line in self.lines[0]:
if (line[1]*180)/np.pi > 8:
idx.append(index)
index+=1

self.lines[0] = np.delete(self.lines[0], idx, axis=0)

关于python - 在其内容循环中删除顺序NumPy数组索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27604278/

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