所以我有一个数组,例如a = np.array([1,2,3,4,5,1,6,1])
。我想找到这个数组最小值的位置,所以我做了:
print np.where(a == a.min())
显然它打印了0,5,7。现在我有另一个数组,其长度与数组a相同。让我们调用那个数组b。我想在索引0,5,7处找到该数组的值。我可以输入b [0],b [5]和b [7]。但这非常低效。有人可以帮我写一个能为我做这个功能的函数。我想的是:
def location(h):
h = np.where(a==a.min())
print b[h]
但我不认为这是正确的,我没有得到正确的答案。非常感谢您的帮助。
答案 0 :(得分:0)
np.where(a == a.min())[0]
返回(array([0,5,7],dtype = int64),),遍历数组。
def location(a):
vals = np.where(a == a.min())[0]
for item in vals:
print(b[item])
使用map
和lambda表达式。 (Python3)
print(list(map(lambda x: b[x], np.where(a == a.min())[0])))
Python2.x
print list(map(lambda x: b[x], np.where(a == a.min())[0]))
抱歉我运行了python3,只需将print函数更改为statement。感谢。
答案 1 :(得分:0)
a == a.min()
返回一个布尔数组,显示a
中的值等于a
中的最小值。
您可以使用此数组索引到任何其他长度相同的数组 - b[a == a.min()]
将返回一个长度为3的数组,其中包含您想要的值。