簡體   English   中英

計算 2D numpy 數組每行的重復數

[英]count number of duplicates for each row of a 2D numpy array

python中是否有一種簡單的方法來檢查不同行中的重復數量。 例如:

Row1: 12  13  20  25  45  46  
Row2: 14  24  30  38  39  47  
Row3:  1   9  15  21  29  39  
Row4:  2   6  14  19  26  45  
Row5:  5  23  25  27  32  40  
Row6:  6   8  25  26  27  45  

我想將 Row6 與之前的“n”行進行比較。 如果 n=5,那么輸出應該是這樣的: [2 0 0 3 2]

當然,我可以將 Row6 中的每個值與循環中其他行的每個值進行比較,並為每一行增加計數器。

但是你知道python中已經存在的任何函數嗎?

如果您正在使用 numpy 數組,請使用廣播比較,

>>> n = 5
>>> v = df.values 
>>> v
array([[12, 13, 20, 25, 45, 46],
       [14, 24, 30, 38, 39, 47],
       [ 1,  9, 15, 21, 29, 39],
       [ 2,  6, 14, 19, 26, 45],
       [ 5, 23, 25, 27, 32, 40],
       [ 6,  8, 25, 26, 27, 45]])
>>> (v[None, -(n+1):-1, None] == v[-1, :, None]).sum(-1).sum(-1).squeeze()
array([2, 0, 0, 3, 2])

您可以使用 numpy 中的 unique

>>> import numpy as np 
>>> np.unique([1, 1, 2, 2, 3, 3])
array([1, 2, 3])
>>> a = np.array([[1, 1], [2, 3]])
>>> np.unique(a)
array([1, 2, 3])

您仍然需要遍歷 n 行,然后檢查結果數組的長度。 也許你仍然使用 numpy 找到更合適的東西。

暫無
暫無

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

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