1. 程式人生 > >Python中找出陣列或者矩陣每行/每列中個數最多的成員,及出現的次數

Python中找出陣列或者矩陣每行/每列中個數最多的成員,及出現的次數

 在Python中,我們可以用scipy.stats.mode函式尋找陣列或者矩陣每行/每列中最常出現成員以及出現的次數 。

from scipy.stats import mode
def mode(a, axis=0, nan_policy='propagate'):

函式作用:返回傳入陣列/矩陣中最常出現的成員以及出現的次數。

如果多個成員出現次數一樣多,返回值小的那個。


舉例說明:

list = ['a', 'a', 'a', 'b', 'b', 'b', 'a']
print("# Print mode(list):", mode(list))
print("# list中最常見的成員為:{},出現了{}次。".format(mode(list)[0][0], mode(list)[1][0]))

# Print mode(list): ModeResult(mode=array(['a'], dtype='<U1'), count=array([4]))
# list中最常見的成員為:a,出現了4次。

 

a = np.array([[2, 2, 2, 1],
              [1, 2, 2, 2],
              [1, 1, 3, 3]])
print("# Print mode(a):", mode(a))
print("# Print mode(a.transpose()):", mode(a.transpose()))
print("# a的每一列中最常見的成員為:{},分別出現了{}次。".format(mode(a)[0][0], mode(a)[1][0]))
print("# a的第一列中最常見的成員為:{},出現了{}次。".format(mode(a)[0][0][0], mode(a)[1][0][0]))
print("# a的每一行中最常見的成員為:{},分別出現了{}次。".format(mode(a.transpose())[0][0], mode(a.transpose())[1][0]))
print("# a中最常見的成員為:{},出現了{}次。".format(mode(a.reshape(-1))[0][0], mode(a.reshape(-1))[1][0]))

# a的每一列中最常見的成員為:[1 2 2 1],分別出現了[2 2 2 1]次。
# a的第一列中最常見的成員為:1,出現了2次。
# a的每一行中最常見的成員為:[2 2 1],分別出現了[3 3 2]次。
# a中最常見的成員為:2,出現了6次。