3.其他聚合操作
Function Name NaN-safe Version Description
np. sum np. nansum Compute sum of elements #求和
np. prod np. nanprod Compute product of elements #求乘积
пр. mean np. nanmean Compute mean of elements #求平均值
np. std np. nanstd Compute standard deviation #求标准方差
np. var np. nanvar Compute variance #求方差
np. min np. nanmin Find minimum value #求最小值
np. max np. nanmax Find maximum value #求最大值
np. argmin np. nanargmin Find index of minimum value #求最小值索引
np. argmax np. nanargmax Find index of maximum value #求最大值索引
np. median np. nanmedian Compute median of elements #求中位数
np. percentile np. nanpercentile Compute rank-based statistics of elements #求百分位数
пp, any N/A Evaluate whether any elements are true #any 检测一个B0OL数组中,是否全少存在一个True
np. all N/A Evaluate whether all elements are true #all 检测一个B0OL数组中,是否全为True
np. power 幕运算
--------------------------------------------------------------------------------------------
最大值和最小值
пp.any()和пp.all()
#any 检测一个B0OL数组中,是否全少存在一个True
#all 检测一个B0OL数组中,是否全为True
bool_list=np.array([False, False, False, False]) bool_list.any()
#运行输出
False
bool_list.all()
#运行输出
False
#求百分位数
data = np. arange (0, 11, step=1) data
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
#第一个参数是要求百分位数的数据 #第二个参数是要求的百分位的位置 #异常值检测会使用Q1 Q3| np.percentile(data, [0.25, 0.75])
array([0.025, 0.075])
五、ndarray的矩阵操作
1.基本矩阵操作
1)算术运算符:
.加减乘除
2)矩阵积np.dot()
a = np.array([[1, 2], [3, 4]]) b = np.array([[1, 1], [2, 2]]) display(a,b)
array([[1, 2], [3, 4]]) array([[1, 1], [2, 2]])
#单纯的数学运算 a+b
array([[2, 3],
[5, 6]])
#数学矩阵运算 加减运算与单纯的数学运算相同,乘不同 np.dot(a,b)
array([[ 5, 5],
[11, 11]])
2.广播机制 # 意思是维度不同,用相同值补充维度
【重要】 ndarray广播机制的两条规则.
规则一:为缺失的维度补1
规则二:假定缺失元素用已有值填充
#numpy的广播机制,自动按已有的值填充没有的维度 arr12=np.array([1,2,3,4,5]) arr13=3 #0维,自动填充成1维 [1,1,1,1,1] arr12+arr13
array([4, 5, 6, 7, 8])
六、ndarray的排序
小测验:使用以上所学numpy的知识,对一个ndarray对象进行冒泡排序。def bubleSort(x):代码越短越好
1.快速排序np.sort()与ndarray.sort()都可以,但有区别:
np.sort(X)不改变输入
X.sort()本地处理,不占用空间,但改变输入
data=np.random.permutation(10) data
array([7, 0, 4, 8, 1, 3, 6, 5, 2, 9])
#排序后,直接更改原来数组的数据位置 data.sort() data
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
#不改变原来数组的东西 np.sort(data)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
2.部分排序 意思需要几个数排几个数,其他部分数据不变,不用全部排序
np.partition(a,k)
有的时候我们不是对全部数据感兴趣,我们可能只对最小或最大的一部分感兴趣。
当k为正时,我们想要得到最小的k个数.
当k为负时,我们想要得到最大的k个数
data=np.random.permutation(10000) data
array([6786, 6237, 8908, ..., 9190, 754, 5495])
#当k为正时,我们想要得到最小的k个数. np.partition(data,4)[:4] #排完最前面几个数据在4的范围后,[:4]切片数据
array([1, 0, 2, 3])
#当k为负时,我们想要得到最大的k个数 np.partition(data,-4)[-4:] #排完最后面几个数据在-4的范围后,[-4:]切片数据
array([9996, 9998, 9999, 9997])