iT邦幫忙

0

Python 陣列內尋找特定範圍的最小值

請問如下面的陣列
想要挑出第 0 列中的各種值,並且在第 1 列的值最小

陣列 a

import numpy as np

a = np.array([[1,1],[1,2],[1,3],[1,4],[2,2],[2,3],[2,4],[3,1],[3,2],[3,3],[4,3],[4,4]])

[[1 1] # 1 範圍1~4 最小值1
 [1 2]
 [1 3]
 [1 4]
 [2 2]  # 2 範圍2~4 最小值2
 [2 3]
 [2 4]
 [3 1]  # 3 範圍1~3 最小值1
 [3 2]
 [3 3]
 [4 3]  # 4 範圍3~4 最小值3
 [4 4]]

預期答案是
[1,1]
[2,2]
[3,1]
[4,3]

試著用 fornp.min() 找,頂多找到一組
因為範圍可能不定,所以沒有辦法用 a[0:5,1] 之類的找
有無其他建議跟方向,謝謝

1 個回答

0
sheep630459
iT邦新手 5 級 ‧ 2020-04-23 00:15:48
最佳解答

我的話會這樣寫

import numpy as np

a = np.array([[1, 1], [1, 2], [1, 3], [1, 4], [2, 2], [2, 3],
              [2, 4], [3, 1], [3, 2], [3, 3], [4, 3], [4, 4]])

obj = {}
for i in a:
    if i[0] not in obj.keys():
        obj.update({i[0]: i[1]})
    else:
        if i[1] < obj.get(i[0]):
            obj.update({i[0]: i[1]})


ans = [[key, value] for key, value in obj.items()]
for i in ans:
    print(i)
hokou iT邦新手 5 級 ‧ 2020-04-23 08:50:14 檢舉

沒想到可以用 key !
試了2天,感謝解惑

我要發表回答

立即登入回答