gpt4 book ai didi

python - 根据子数组中的第一个元素删除 numpy 子数组

转载 作者:太空宇宙 更新时间:2023-11-04 02:17:54 25 4
gpt4 key购买 nike

我有一个 numpy 数组是从一个函数生成的,如下所示

 circles = [[ 56, 152, 26],
[288, 300, 25],
[288, 362, 25],
[288, 238, 24],
[318, 298, 45],
[220, 366, 29]]

我想检查每个子数组的第一个元素中的所有值是否一致(数学上接近,相差不大,即 > 5)并删除不符合此条件的子数组。所以在这种情况下,我想删除任何大于 288 + 5 或小于 288 - 5 的子数组。有什么想法吗?

最佳答案

使用 mode 的可能解决方案:

>>> from scipy.stats import mode
>>> eps = 5
>>> most_freq = mode(circles[:, 0])[0][0]
>>> mask = np.abs(circles[:, 0] - most_freq) <= eps
>>> circles[mask]
array([[288, 300, 25],
[288, 362, 25],
[288, 238, 24]])

编辑:如果您的 circles 数组仅限于非负整数,您可以对 most_freq 使用以下表达式:

most_freq = np.bincount(circles[:, 0]).argmax()

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

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