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.        ]]
posted @ 2023-01-03 07:45  顺心无忧  阅读(117)  评论(0编辑  收藏  举报