【发布时间】:2018-01-01 15:58:16
【问题描述】:
假设我有一些 numpy 数组 myArr。我知道我可以轻松地选择myArr > x 来查找值高于x 的元素的索引。
我如何找到元素的索引,相邻的元素在x之上?对于一维数组,元素相邻一些idx 是(idx-1, idx+1)。对于d 维度的数组,我的意思是在 any 维度中相邻。也就是说,让d=3。 myArr[2, 2, 2] 的邻居是 [(1, 2, 2), (2, 1, 2), (2, 2, 1), (3, 2, 2), (2, 3, 2), (2, 2, 3)]。
举个例子
import numpy as np
test = np.arange(4**2).reshape((4,4))
在这里,我们可以图形化的看到5的相邻元素是[1, 4, 6, 9]
test
Out[10]:
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
我希望能够根据相邻元素进行选择。例如,我想要所有索引,其相邻元素为>= 9。在上面的示例中,以下值适用:[5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15](4 不算,因为我定义了相邻而不是对角线。)
我的预期输出将是典型的二进制矩阵:
neighboringIndicesLargerThan(myArr, 9)
array([[False, False, False, False],
[False, True, True, True],
[ True, True, True, True],
[ True, True, True, True]], dtype=bool)
如果它适用于任何尺寸,那就太好了,但我需要它至少在 3 上工作。
【问题讨论】: