在未排序的numpy数组中查找下一个邻居



假设我有一个(2,N(numpy数组,如下所示:

a=[[ 0 58  0 72  0 90  0  0 15  0 33 43]
[11  0 62  0 82  0 48  6  0 21  0  0]]

是否有一种简单(高效(的方法可以在自己的行以及其他中找到每个条目的后续条目和前一条目的索引号?

如果我的问题令人困惑,这里有一个例子,我的意思是:

考虑下一行中的条目a[1,6]=48。它自己行中的(值(后继显然是a[1,9]=21,而它的前一个是a[1,2]=62

上行也是如此:仍然关于[1,6]=48,我想知道其他行中的后继值和前导值的索引是什么,这将是[0,11]=43和[0,1]=58。

如何通过高效的numpy操作快速获得这些索引[1,9]、[1,2]、[0,11]和[0,1],而不需要将任何东西编程到(慢!(Python循环中?

从每个数组元素中减去入口值。例如,这将为您提供第二行

[-37 -48 14 -48 34 -48  0 -42 -48 -27 -48 -48]

过滤正值并找到min;过滤负值并找到max。对另一行重复此步骤。

您可以查找如何找到最小/最大元素的位置。这个问题可能会有所帮助。

最新更新