簡體   English   中英

在 Python 的 ndarray 列表中查找最常見的值

[英]Finding the most common Values in a list of ndarrays in Python

我試圖在 ndarray 列表中找到最常見的 ndarray。 我嘗試使用 mostCommon() function 但出現此錯誤: TypeError: unhashable type: 'numpy.ndarray

關於如何解決這個問題的任何想法?

示例列表:

a = [array([1, 2, 3]),array([1, 10,30,2, 3]),array([1, 2, 3])]

我希望它打印最常見的 ndarray: array([1, 2, 3])

Numpy 確實不太適合這種計算,因為它處理可變大小的 arrays(又名交錯數組)。 此外,處理此類問題的一般方法是對數組進行排序或使用哈希表,但不同大小的 Numpy 數組不能進行本地比較,它們也不是簡單的哈希表。

處理此類問題的一個技巧是將 arrays 轉換為元組,然后使用字典對項目進行計數。 這是結果代碼:

from collections import Counter

a = [np.array([1, 2, 3]), np.array([1, 10,30,2, 3]), np.array([1, 2, 3])]
result = np.asarray(Counter(map(tuple, a)).most_common()[0][0])

# result = array([1, 2, 3])

請注意,這對於大列表不是很有效,但使用小列表 Numpy arrays 實際上是阻止計算快速的原因。 至少,解決方案很簡單。

暫無
暫無

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

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