簡體   English   中英

如何在數組列表中查找最大值

[英]How to find maximum value in a list of arrays

我有一個非常大的數組列表,看起來像這樣:

'apples': array([1,2,3,4]), 'pears': array([1,2,10,11]),'oranges': array([1,10,10,3])

我想找到所有數組中的最大值。 在我上面的簡短示例中,它將是11。

我正在努力寫一些能給我列表中所有數組最大值的東西。 任何想法都會受到歡迎。

你的列表實際上是一本字典,所以你可以這樣做:

arr = {'apples': [1,2,3,4], 'pears': [1,2,10,11],'oranges': [1,10,10,3]}
res = max(map(max, arr.values()))
print(res)

輸出:

11

您也可以使用itertools模塊中的chain函數來完成它:

from itertools import chain

arr = {'apples': [1,2,3,4], 'pears': [1,2,10,11],'oranges': [1,10,10,3]}
res = max(chain(max(i) for i in arr.values()))
print(res)

輸出:

11

這會有用嗎?

big_dict = {"apple" : list([1,2,3]),
            "pear" : list([4,5,6])}

print max([max(v) for v in big_dict.itervalues()])

從你給出的例子來看,它看起來像是字典而不是列表,但為了簡單起見,我們假設它是一個以下形式的列表:

[[2,3,55],[23,5,63],[2,3,6],[4,6,78], ...]

因此,您可以做的是遍歷主列表並將當前最大值保留在變量中,並且只比較每個數組的最大值並更新(如果更大)。

max_value = 0
for l in yourList:
    curr = max(l)
    if curr > max_value:
        max_value = curr
print max_value

這可以很容易地轉換為使用字典而不是列表,只是迭代字典中的每個項目,邏輯將是相同的(必須從值獲得max() )。

希望這可以幫助!

如果您的數據在字典變量d中,請嘗試一下

l=[max(d[key]) for key in d.keys()]
print max(l)

或者你可以使用一個班輪

print max([max(d[key]) for key in d.keys()])

你不能直接這樣做,嘗試形成另一個數組並檢查'max(arraylist)'

首先創建一個新列表,其中包含每個詞典元素的最大值,然后獲取該新列表的最大值

dict = {"apples" : [1, 2, 8, 4], "fruits": [3,2,6]} 

maxlst = [max(el) for el in dict.values()]
print(max(maxlst))

對我來說,更加pythonic的方式是使用理解詞:

dictionary = {'apples': np.array([1,2,3,4]), 
'pears': np.array([1,2,10,11]),'oranges': np.array([1,10,10,3])}

In [144]: { k:v.max() for k,v in dictionary.items() }
Out[144]: {'apples': 4, 'oranges': 10, 'pears': 11}

另一種簡單的方法是使用熊貓:

In [145]: pd.DataFrame(dictionary).max()
Out[145]: 
apples      4
oranges    10
pears      11
dtype: int32

對於大型列表,您可以使用下面的內容

obj={'apples': [1,2,3,4], 'pears': [1,2,10,11],'oranges': [1,10,10,3]}

max(sum(obj.values(), []))

11

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM