函数在Python中打印几个数组索引的值

时间:2017-09-24 19:52:26

标签: python numpy

所以我有一个数组,例如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]

但我不认为这是正确的,我没有得到正确的答案。非常感谢您的帮助。

2 个答案:

答案 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的数组,其中包含您想要的值。