NumPy科学计算库学习_011_NumPy数组中的通用函数
1、元素级数字函数
arr1 = np.array([1,-2,3,-4,5,-6])
arr2 = np.array([4,8,16,81,1024,4096])
arr3 = np.array([0,1])
arr4 = np.array([10,1000])
arr5 = np.array([[True,True],[False,True]])
arr6 = np.array([1.232,112.254])
arr7 = np.array([[1,2,3],[4,2,6]])
print("【arr1】\n",arr1)
print("【arr2】\n",arr2)
print("【arr3】\n",arr3)
print("【arr4】\n",arr4)
print("【arr5】\n",arr5)
print("【arr6】\n",arr6)
print("【arr7】\n",arr7)
【arr1】
[ 1 -2 3 -4 5 -6]
【arr2】
[ 4 8 16 81 1024 4096]
【arr3】
[0 1]
【arr4】
[ 10 1000]
【arr5】
[[ True True]
[False True]]
【arr6】
[ 1.232 112.254]
【arr7】
[[1 2 3]
[4 2 6]]
【1】numpy.abs(array)
对逐个元素进行绝对值计算
print("【abs函数】\n",np.abs(arr1))
【abs函数】
[1 2 3 4 5 6]
【2】numpy.sqrt(array)
对逐个元素进行平方根计算
print("【sqrt函数】\n",np.sqrt(arr2))
【sqrt函数】
[ 2. 2.82842712 4. 9. 32. 64. ]
【3】numpy.square(array)
对逐个元素进行平方计算
print("【square函数】\n",np.square(arr1))
【square函数】
[ 1 4 9 16 25 36]
【4】numpy.exp(array)
对逐个元素进行自然指数计算
print("【exp函数】\n",np.exp(arr3))
【exp函数】
[1. 2.71828183]
【5】numpy.log(array)
对逐个元素进行以e为底的对数
的计算
print("【log函数】\n",np.log(arr4))
【log函数】
[2.30258509 6.90775528]
【6】numpy.sin(array)
对逐个元素进行正弦
计算
print("【sin函数】\n",np.sin(arr3))
【sin函数】
[0. 0.84147098]
【7】numpy.cos(array)
对逐个元素进行余弦
计算
print("【cos函数】\n",np.cos(arr3))
【cos函数】
[1. 0.54030231]
【8】numpy.tan(array)
对逐个元素进行正切
计算
print("【tan函数】\n",np.tan(arr3))
【tan函数】
[0. 1.55740772]
【9】numpy.maximum(array1, array2)
两个形状相同
的数组,逐个对相对应
数组元素的值
比较,输出较大的元素
print("【maximum函数】\n",np.maximum(arr1,arr2))
【maximum函数】
[ 4 8 16 81 1024 4096]
【10】numpy.minimum(array1, array2)
两个形状相同
的数组,逐个对相对应
数组元素的值
比较,输出较小的元素
print("【minimum函数】\n",np.minimum(arr1,arr2))
【minimum函数】
[ 1 -2 3 -4 5 -6]
【11】numpy.all(array, axis=0/1)
AND逻辑运算
numpy.all(array, axis=0)
数组垂直方向
对每个元素进行AND
逻辑运算numpy.all(array, axis=1)
数组水平方向
对每个元素进行AND
逻辑运算
print("【all函数—>垂直方向AND】\n",np.all(arr5,axis=0))
print("【all函数—>水平方向AND】\n",np.all(arr5,axis=1))
【all函数—>垂直方向AND】
[False True]
【all函数—>水平方向AND】
[ True False]
【12】numpy.any(array, axis=0/1)
OR逻辑运算
numpy.any(array, axis=0)
数组垂直方向
对每个元素进行OR
逻辑运算numpy.any(array, axis=1)
数组水平方向
对每个元素进行OR
逻辑运算
print("【any函数—>垂直方向OR】\n",np.any(arr5,axis=0))
print("【any函数—>水平方向OR】\n",np.any(arr5,axis=1))
【any函数—>垂直方向OR】
[ True True]
【any函数—>水平方向OR】
[ True True]
【13】numpy.inner(array1, array2)
内积(只有当两个NumPy数组的列相同时合法!)
1维数组
和多维数组
的内积计算方式- 数组前后顺序颠倒,结果相同
\[\begin{bmatrix}
3&7&9&7&1\\
\end{bmatrix}_{(\color{red}{1}\times5)}
\begin{bmatrix}
3&7&9&7&1\\
7&3&7&1&3\\
3&2&5&0&3\\
3&0&0&7&6\\
6&1&2&7&7\\
\end{bmatrix}_{(5\times\color{red}5)}
=
\begin{bmatrix}
\color{lightgrey}{3*3+7*7+9*9+7*7+1*1}=189&
115&
71&
64&
99\\
\end{bmatrix}_{(\color{red}1\times\color{red}5)}
\]
arr1 = np.array([[3,7,9,7,1],[7,3,7,1,3],[3,2,5,0,3],[3,0,0,7,6],[6,1,2,7,7]])
print("【arr1】\n",arr1)
print("【1维inner多维的内向积】\n", np.inner(arr1[0],arr1))```
【arr1】
[[3 7 9 7 1]
[7 3 7 1 3]
[3 2 5 0 3]
[3 0 0 7 6]
[6 1 2 7 7]]
【1维inner多维】
[189 115 71 64 99]
多维数组
和多维数组
的内积计算方式
arr1 = np.array([[1,2,3],[4,5,6],[2,3,4],[5,5,6],[1,3,3]])
arr2 = np.array([[6,9,1],[4,8,2],[1,0,3],[2,1,4]])
print("【用inner函数,必须确保两个数组的列数相同,行数可以不同】\n", np.inner(arr1,arr2))
【用inner函数,必须确保两个数组的列数相同】
[[27 26 10 16]
[75 68 22 37]
[43 40 14 23]
[81 72 23 39]
[36 34 10 17]]
【14】numpy.clip(a,a_min,a_max,out = None)
限制一个数组的上下界
- 当数组元素超越上下界时,该元素用a_min或a_max代替。
print("【clip函数】\n",np.clip(arr1,0,2,out = None))
【clip函数】
[1 0 2 0 2 0]
【15】numpy.round(array)
给数组中的每个元素取近似值
4舍6入5凑偶
的误差理论- 当整数部分是偶数,小数部分是0.5时,向下取整,最后结果为偶数;
- 当整数部分是奇数,小数部分是0.5时,则向上取整,最后结果为偶数。
- 这样得到的结果在统计学上更精确。numpy的round函数采用的是这种方法。
print("【round函数】\n",np.round(arr6,decimals=2))
【round函数】
[ 1.23 112.25]
【16】numpy.trace(array)
返回沿数组对角线的总和
print("【trace函数】\n",np.trace(arr7, offset=0, axis1=0, axis2=1, dtype=None, out=None))
【trace函数】
3
【17】numpy.ceil(array)
对数组中的每个元素向上取整
print("【ceil函数】\n",np.ceil(arr6))
【ceil函数】
[ 2. 113.]
【18】numpy.floor(array)
对数组中的每个元素向下取整
print("【floor函数】\n",np.floor(arr6))
【floor函数】
[ 1. 112.]
2、where
函数
arr1 = np.array([1,3,5,7,9])
arr2 = np.array([2,4,6,8,10])
cond = np.array([True,False,True,True,False])
print("【True返回arr1的元素,False返回arr2的元素】\n", np.where(cond,arr1,arr2))
print("【True返回arr1的元素,False返回arr2的元素】\n", np.where(arr1 < arr2,arr1,arr2))
【True返回arr1的元素,False返回arr2的元素】
[ 1 4 5 7 10]
【True返回arr1的元素,False返回arr2的元素】
[1 3 5 7 9]
2.1 extract
函数
np.extract(arr1>3, arr1) # 只返回满足条件的元素
array([5,7,9])
3、排序
函数
【1】 arr.sort()
直接改变原数组的排序
arr1 = np.array([9,3,11,6,17,5,4,15,1])
arr1.sort() # 直接改变了原数组
print("【arr1.sort()】\n", arr1)
【arr1.sort()】
[ 1 3 4 5 6 9 11 15 17]
【2】arr.argsort()
返回从小到大的索引
arr1 = np.array([9,3,11,6,17,5,4,15,1])
arr2 = arr1.argsort()
print("【arr2】\n", arr2)
【arr2】
[8 1 6 5 3 0 2 7 4]
【3】np.sort()
返回深拷贝排序结果
arr1 = np.array([9,3,11,6,17,5,4,15,1])
arr2 = np.sort(arr1)
print("【arr2】\n", arr2)
【arr2】
[ 1 3 4 5 6 9 11 15 17]
【4】np.argsort()
返回深拷贝从小到大的索引排序
arr1 = np.array([9,3,11,6,17,5,4,15,1])
arr2 = np.argsort(arr1)
print("【arr2】\n", arr2)
【arr2】
[8 1 6 5 3 0 2 7 4]
4、集合运算
函数
arr1 = np.array([2,4,6,8])
arr2 = np.array([3,4,5,6])
print("【交集:返回两个数组都有的元素】\n",np.intersect1d(arr1,arr2))
print("【并集:返回两个数组全部的元素,不包含重复元素】\n",np.union1d(arr1,arr2))
print("【差集:返回arr1中有的,arr2中没有的元素】\n",np.setdiff1d(arr1,arr2))
print("【差集:返回arr2中有的,arr1中没有的元素】\n",np.setdiff1d(arr2,arr1))
【交集:返回两个数组都有的元素】
[4 6]
【并集:返回两个数组全部的元素,不包含重复元素】
[2 3 4 5 6 8]
【差集:返回arr1中有的,arr2中没有的元素】
[2 8]
【差集:返回arr2中有的,arr1中没有的元素】
[3 5]
5、数学和统计
函数
【1】numpy.min(array)
返回NumPy数组中最小
的数
arr1=np.array([[1,2,4],[3,6,8],[3,5,7]])
print("【min】\n",np.min(arr1))
【min】
1
【2】numpy.max(array)
返回NumPy数组中最大
的数
arr1=np.array([[1,2,4],[3,6,8],[3,5,7]])
print("【max】\n",np.max(arr1))
【max】
8
【3】numpy.mean(array)
返回NumPy数组中所有元素的平均值
arr1=np.array([[1,2,4],[3,6,8],[3,5,7]])
print("【mean】\n",np.mean(arr1))
【mean】
4.333333333333333
【4】numpy.median(array)
返回NumPy数组中所有元素的中位值
arr1=np.array([[1,2,4],[3,6,8],[3,5,7]])
print("【median】\n",np.median(arr1))
【median】
4.0
【5】numpy.sum(array)
返回NumPy数组中所有元素的和
arr1=np.array([[1,2,4],[3,6,8],[3,5,7]])
print("【sum】\n",np.sum(arr1))
【sum】
39
【6】numpy.std(array)
统计NumPy数组的标准差
arr1=np.array([[1,2,4],[3,6,8],[3,5,7]])
print("【std】\n",np.std(arr1))
【std】
2.211083193570267
【7】numpy.var(array)
统计NumPy数组的方差
- std = \(\sqrt{var}\)
arr1=np.array([[1,2,4],[3,6,8],[3,5,7]])
print("【var】\n",np.var(arr1))
【var】
4.888888888888889
【8】numpy.cumsum(array)
NumPy数组进行累加
操作,返回数组哦
print("【cumsum:1维数组累加】\n",np.cumsum(arr1))
print("【cumsum:按行累加】\n",np.cumsum(arr1,axis=0))
print("【cumsum:按列累加】\n",np.cumsum(arr1,axis=1))
【cumsum:1维数组累加】
[ 1 3 7 10 16 24 27 32 39]
【cumsum:按行累加】
[[ 1 2 4]
[ 4 8 12]
[ 7 13 19]]
【cumsum:按列累加】
[[ 1 3 7]
[ 3 9 17]
[ 3 8 15]]
【9】numpy.cumprod(array)
NumPy数组进行累乘
操作,返回数组哦
print("【cumprod:1维数组累乘法】\n",np.cumprod(arr1))
print("【cumprod:按行累乘】\n",np.cumprod(arr1,axis=0))
print("【cumprod:按列累乘】\n",np.cumprod(arr1,axis=1))
【cumprod:1维数组累乘法】
[ 1 2 8 24 144 1152 3456 17280 120960]
【cumprod:按行累乘】
[[ 1 2 4]
[ 3 12 32]
[ 9 60 224]]
【cumprod:按列累乘】
[[ 1 2 8]
[ 3 18 144]
[ 3 15 105]]
【10】numpy.argmin(array)
NumPy数组中,返回最小
元素的位置(0索引开始)
print("【argmin】\n",np.argmin(arr1))
【argmin】
0
【11】numpy.argmax(array)
NumPy数组中,返回最大
元素的位置(0索引开始)
print("【argmax】\n",np.argmax(arr1))
【argmax】
5
【12】numpy.argwhere(array)
NumPy数组中,返回满足条件
的元素的索引
print("【argwhere】\n",np.argwhere(arr1>3))
【argwhere】
【argwhere】
[[0 2]
[1 1]
[1 2]
[2 1]
[2 2]]
【13】numpy.cov(m, y=None, rowvar=True)
NumPy数组中,返回协方差
矩阵
- m: array_like,包含多个变量和观测值的1-D或2-D数组,m的每一行代表一个变量,每一列都是对所有这些变量的单一观察。
- y: array_like, 可选,另外一组变量和观察,y具有与m相同的形状。
- rowvar: bool, 可选,如果rowvar为True(默认值),则每行代表一个变量X,另一个行为变量Y。否则,转换关系:每列代表一个变量X,另一个列为变量Y。
print("【cov协方差矩阵,X为行,Y为列】\n",np.cov(arr1,rowvar=True))
print("【cov协方差矩阵,X为列,Y为行】\n",np.cov(arr1,rowvar=False))
【cov协方差矩阵,X为行,Y为列】
[[2.33333333 3.66666667 3. ]
[3.66666667 6.33333333 5. ]
[3. 5. 4. ]]
【cov协方差矩阵,X为列,Y为行】
[[1.33333333 2.33333333 2.33333333]
[2.33333333 4.33333333 4.33333333]
[2.33333333 4.33333333 4.33333333]]
【14】numpy.corrcoef(x, y=无, rowvar = True, 偏差=<无值>, ddof=<无值>)
NumPy数组中,返回相关性系数
矩阵
- x: array_like,包含多个变量和观测值的1-D或2-D数组,x的每一行代表一个变量,每一列都是对所有这些变量的单一观察。
- y: array_like, 可选,另外一组变量和观察,y具有与x相同的形状。
- rowvar: bool, 可选,如果rowvar为True(默认值),则每行代表一个变量,并在列中显示。否则,转换关系:每列代表一个变量,而行包含观察。
- 偏差: _NoValue,可选,没有效果,请勿使
- ddof: _NoValue,可选,没有效果,请勿使用
print("【corr_coef相关性系数矩阵】\n",np.corrcoef(arr1))
【corr_coef相关性系数矩阵】
[[1. 0.95382097 0.98198051]
[0.95382097 1. 0.99339927]
[0.98198051 0.99339927 1. ]]