对于给定的2d数据数组,如何检索7的位置(索引),它本身在邻居中被相同的值包围。
import numpy as np
import scipy.ndimage.filters as filters
data = np.array([[0,1,2,3,4,7,6,7,8,9,10],
[3,3,3,4,7,7,7,8,11,12,11],
[3,3,3,5,7,7,7,9,11,11,11],
[3,4,3,6,7,7,7,10,11,11,11],
[4,5,6,7,7,9,10,11,11,11,11]])
我只想要位置[2,5]。 7由其他7个独家包围。 以下代码为代码中的任何值提供了答案。
answer = np.where(np.logical_and.reduce([data == f(data, footprint=np.ones((3,3)), mode='constant', cval=np.inf) for f in (filters.maximum_filter, filters.minimum_filter)]))
print answer
我想强制它仅适用于指定值(7)。 上面的代码来自Retrieve position of elements with setting some criteria in numpy
的答案答案 0 :(得分:1)
另一个logical_and
,检查指定值,瞧。
specified_value = 7
answer = np.where(np.logical_and(
np.logical_and.reduce(
[data == f(data,
footprint=np.ones((3,3)),
mode='constant',
cval=np.inf) for f in
(filters.maximum_filter,
filters.minimum_filter)]),
data == specified_value))