Python库系列numpy(6)---数组的函数

1.1 矩阵乘积

本节矩阵的乘积要用到np.dot()函数。np.dot语法用于计算两个数组的点积。点积是两个向量的乘积之和,也可以理解为将两个数组的对应元素相乘并求和的结果。

(1)向量与向量的乘积

设两个向量的形状按前后顺序分别是 5 以及 5 。从矩阵乘法的角度,有 (1,5 5,1 1,1 ) = ( ) ( ),因此输出的应该是形状为 1 的向量。

import numpy as np
# 创建向量
arr1 = np.arange(5)
arr2 = np.arange(5)
print(arr1)
print(arr2)
#输出[0 1 2 3 4]
#输出[0 1 2 3 4]
# 矩阵乘积
print(np.dot(arr1,arr2))
#输出  30
(2)向量与矩阵的乘积

向量的形状是 5,矩阵的形状是 (5,3) 。从矩阵乘法的角度,有 (1,5 5,3 1,3 ) = ( ) ( ),因此输出的应该是形状为 3 的向量。

import numpy as np
arr1 = np.arange(5)
arr2 = np.arange(15).reshape(5,3)
print(arr1)
print(arr2)
#输出[0 1 2 3 4]
#输出[[00 01 02]
#    [03 04 05]
#    [06 07 08]
#    [09 10 11]
#    [12 13 14]]
# 矩阵乘积
print( np.dot(arr1,arr2) )
#输出[90 100 110]
(3)矩阵与向量的乘积

设矩阵的形状是 (3,5) ,向量的形状是 5。从矩阵乘法的角度,有 (3,5 5,1 3,1 ) = ( ) ( ),因此输出的应该是形状为 3 的向量。

import numpy as np
# 创建数组
arr1 = np.arange(15).reshape(3,5)
arr2 = np.arange(5)
print(arr1)
print(arr2)
#输出[[00 01 02 03 04]
#    [05 06 07 08 09]
#    [10 11 12 13 14]]
#输出[0 1 2 3 4]
# 矩阵乘积
print( np.dot(arr1,arr2) )
#输出[030 080 130]
(4)矩阵与矩阵的乘积

设两个矩阵的形状按前后顺序分别是 (5,2) 以及 (2,8) 。从矩阵乘法的角度, 有(5, 2 2,8 5,8 ) = ( ) ( ) ,因此输出的应该是形状为 (5,8) 的矩阵。

import numpy as np
# 创建数组 1
arr1 = np.arange(10).reshape(5,2)
print(arr1)
#输出[[0 1]
#    [2 3]
#    [4 5]
#    [6 7]
#    [8 9]]
# 创建数组 2
arr2 = np.arange(16).reshape(2,8)
print(arr2)
#输出[[00 01 02 03 04 05 06 07]
#    [08 09 10 11 12 13 14 15]]
# 矩阵乘积
print( np.dot(arr1,arr2) )
#输出[[008 009 010 011 012 013 014 015]
#    [024 029 034 039 044 049 054 059]
#    [040 049 058 067 076 085 094 103]
#    [056 069 082 095 108 121 134 147]
#    [072 089 106 123 140 157 174 191]]

1.2 数学函数

NumPy 设计了很多数学函数,这里列举其中最重要、最常见的几个。

import numpy as np
# 绝对值函数
arr_v = np.array( [-10, 0, 10] )
abs_v = np.abs(arr_v)
print( '原数组是:' , arr_v )
print( '绝对值是:' , abs_v )
#输出   原数组是: [-10 0 10]
#输出   绝对值是: [10 0 10]
# 三角函数
theta = np.arange(3) * np.pi / 2
sin_v = np.sin(theta)
cos_v = np.cos(theta)
tan_v = np.tan(theta)
print( '原数组是:' , theta )
print( '正弦值是:' , sin_v )
print( '余弦值是:' , cos_v )
print( '正切值是:' , tan_v )
#输出   原数组是: [0. 1.57079633 3.14159265]
#输出   正弦值是: [0.0000000e+00 1.0000000e+00 1.2246468e-16]
#输出   余弦值是: [ 1.000000e+00 6.123234e-17 -1.000000e+00]
#输出   正切值是: [ 0.00000000e+00 1.63312394e+16 -1.22464680e-16]
# 指数函数
x = np.arange(1,4)
print( 'x =' , x )
print( 'e^x =' , np.exp(x) )
print( '2^x =' , 2**x )
print( '10^x = ' , 10**x )
x = [1 2 3]
e^x = [ 2.71828183 7.3890561 20.08553692]
2^x = [2 4 8]
10^x = [ 10 100 1000]
In [5] : # 对数函数
x = np.array( [1,10,100,1000] )
print( 'x =' , x )
print( 'ln(x) =' , np.log(x) )
print( 'log2(x) =' , np.log(x) / np.log(2) )
print( 'log10(x) =' , np.log(x) / np.log(10) )
#输出   x = [ 1 10 100 1000]
#输出   ln(x) = [0. 2.30258509 4.60517019 6.90775528]
#输出   log2(x) = [0. 3.32192809 6.64385619 9.96578428]
#输出   log10(x) = [0. 1. 2. 3.]


1.3聚合函数

NumPy提供了许多用于对数组进行聚合操作的函数,这些函数可以对数组的元素进行统计、计算和汇总。下面介绍几个常用的聚合函数:

· np.sum():计算数组元素的总和。

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
result = np.sum(arr)
print(result)  # 15

· np.mean():计算数组元素的平均值。

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
result = np.mean(arr)
print(result)  # 3.0

· np.min()和np.max():分别计算数组元素的最小值和最大值。

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
min_value = np.min(arr)
max_value = np.max(arr)
print(min_value)  # 1
print(max_value)  # 5

· np.median():计算数组元素的中位数。

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
result = np.median(arr)
print(result)  # 3.0

np.std():计算数组元素的标准差。

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
result = np.std(arr)
print(result)  # 1.4142135623730951

这些函数可以在指定轴上进行聚合操作,通过axis参数指定轴的索引。例如,对于二维数组,可以在行或列上进行聚合操作。这些聚合函数在数据分析、统计计算和科学计算等领域非常有用,能够方便地对数组进行各种统计和计算操作。

以np.max()函数为例:

import numpy as np
# 最大值函数 np.max( )与最小值函数 np.min( )
arr = np.random.random((2,3))
print( arr )
print( '按维度一求最大值:' , np.max(arr,axis=0) )
print( '按维度二求最大值:' , np.max(arr,axis=1) )
print( '整体求最大值:' , np.max(arr) )
#输出  [[0.54312818 0.57067295 0.11898755]
#输出  [0.85857494 0.33915753 0.4742594 ]]
#输出  按维度一求最大值:[0.85857494 0.57067295 0.4742594 ]
#输出  [0.57067295 0.85857494]
#输出  0.8585749445359108

当 axis=0 时,最终结果与每一行的元素个数一致;

当 axis=1 时,最终结果与每一列的元素个数一致。

以上就是numpy数组的函数,你学会了吗?

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值