在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次。