numpy矩阵求最值、均值、方差、标准差、中值、求和,众数

一、最值

  • 获得整个矩阵、行或列的最大最小值。
import numpy as np
a = np.array([[1,2,3,3],[4,5,6,2],[0,8,4,9]])
print(a.max()) #获取整个矩阵的最大值 结果:9
print(a.min()) #获取整个矩阵的最小值 结果: 0
# 可以指定关键字参数axis来获得行最大(小)值或列最大(小)值
# axis=0 行方向最大(小)值,即获得每列的最大(小)值
# axis=1 列方向最大(小)值,即获得每行的最大(小)值
# 例如
print(a.max(axis=0)) #[4 8 6 9]
print(a.max(axis=1))#[3 6 9]
#返回的是位置(索引)
print(a.argmax(axis=0)) #[1 2 1 2]

二、均值

  • 可以获得整个矩阵、行或列的平均值
import numpy as np
a = np.array([[1,2,3,3],[4,5,6,2],[0,8,4,9]])
print(a.mean())  #3.9166666666666665
# 同样地,可以通过关键字axis参数指定沿哪个方向获取平均值
print(a.mean(axis=0)) # 结果 [1.66666667 5.         4.33333333 4.66666667]
print(a.mean(axis=1)) # 结果 [2.25 4.25 5.25]

三、众数

  • 在numpy中没有直接的方法

import numpy as np

# 方法一  bincount和argmax
#由于索引值是从0开始的,所以这种求众数的方法只能用在非负数据集。

nums = [1,2,3,4,3, 3]
counts = np.bincount(nums)  # [0, 1, 1, 3, 1]
data = np.argmax(counts)

# 其中np.bincount方法返回了一个长度为 nums最大值的列表,列表中的每个值代表其索引位数值出现在nums中的次数,
# 例如 返回[0, 1, 1, 3, 1],
# 代表0在nums中出现0次,1在nums中出现1次,2,3,4...,
# 然后再使用np.argmax就能得到众数啦。,


# 方法二  直接利用scipy下stats模块:
 
from scipy import stats
mode = stats.mode(nums)[0][0]

四、中位数 

  • 中值指的是将序列按大小顺序排列后,排在中间的那个值,如果有偶数个数,则是排在中间两个数的平均值
  • numpy.median(x,[axis]),axis可指定轴方向,默认axis=None,对所有数取中值
import numpy as np
a = np.array([[1,2,3,3],[4,5,6,2],[0,8,4,9]])

print(np.median(a)) # 结果 3.5
print(np.median(a,axis=0)) # 结果[1. 5. 4. 3.]
print(np.median(a,axis=1)) # 结果[2.5 4.5 6. ]

五、求和

  • 可以获得整个矩阵、行或列的求和
import numpy as np
a = np.array([[1,2,3,3],[4,5,6,2],[0,8,4,9]])

print(a.sum()) # 结果 47
print(a.sum(axis=0)) # 结果[ 5 15 13 14]
print(a.sum(axis=1)) # 结果[ 9 17 21]

六、方差

  • 方差函数var()相当于函数mean(abs(x - x.mean())**2),其中x为矩阵。
    import numpy as np
    
    a = np.array([[1,2,3],[4,5,6]])
    print(a.var()) # 结果 2.91666666667
    
    print(a.var(axis=0)) # 结果 [ 2.25  2.25  2.25]
    print(a.var(axis=1)) # 结果 [ 0.66666667  0.66666667]
    

七、标准差

  • std()相当于sqrt(mean(abs(x - x.mean())**2)),或相当于sqrt(x.var())。
import numpy as np
a = np.array([[1,2,3,3],[4,5,6,2],[0,8,4,9]])

print(a.std()) # 结果2.5967394084804805
print(a.std(axis=0)) # 结果[1.69967317 2.44948974 1.24721913 3.09120617]
print(a.std(axis=1)) # 结果 [0.8291562  1.47901995 3.56195171]

八 、参考

Python笔记】Scipy.stats.norm函数解析_阳光快乐普信男的博客-CSDN博客_stats.norm.rvs

Python-matplotlib画图(莫烦笔记)_看不见我呀的博客-CSDN博客_matplotlib画图

matplotlib如何显示标签_Matplotlib画图如此简单_weixin_39638305的博客-CSDN博客

你可能感兴趣的:(笔记,数据处理,python,数据挖掘,机器学习)