【发布时间】:2018-05-10 00:24:39
【问题描述】:
我有一个一维 numpy 数组。其中的所有内容都应该是 10 的整数倍。我需要搜索它,找到我的整数倍数大于 10 的任何地方,即 20、30 等。当我找到一个时,我需要能够识别该值发生中断的索引并将它们用于某些处理。我还需要返回孤立的单个值并对它们做一些不同的事情。例如,
0、10、20、60、80、90、100
0 到 20 是一组,所以我需要把 0 和 20 拿回来做一些事情,同样 80 到 100 是一组,应该发生同样的情况。 60 虽然只是它自己的一个值,所以我需要看到它只是一个孤立的单个值并对其进行一些单独的处理,然后在 80 处恢复以获得正确的结果。
一直在尝试用 numpy 找出一种合理的方法来做到这一点,但没有想出太多。数据集非常大,所以效率越高越好。理论上,集合内不应该有重复的值,并且随着我们在数组中前进,它们应该总是进步。感谢您提前提供任何帮助。
【问题讨论】:
-
我将从
np.diff开始查找相邻样本之间的成对差异,然后进行逻辑索引以查找差异大到足以将数组拆分为子数组的位置。看看np.diff能走多远,如果遇到问题,用代码更新问题。 -
最佳答案:stackoverflow.com/a/7353335/8033585:
np.split(data, np.where(np.diff(data) != stepsize)[0]+1)
标签: python arrays sorting numpy