[英]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.