【Python】常用工具包系列1 —— numpy

笔者:YY同学Serendipity

生命不息,代码不止。好玩的项目尽在GitHub!



1. 数组(矩阵)通用

导入

模块名功能代码示例解释说明
numpypython 多维数组模块import numpy as npnp 也可以命名为其他的
numpy.linalg线性代数import numpy.linalg as lala 也可以命名为其他的

创建

方法名功能代码示例解释说明
np.array创建数组a = np.array([1, 2])注意数组(array)与列表(list)的区别,两者部分 method 不是通用的
np.asarray创建与 list 相同的数组a = [1,2,3], b = np.asarray(a)数组 b 与列表 a 的元素完全相同,创建的对象可以是列表也可以是数组
=引用传值b = ab 数组与 a 相同,修改 b 中元素相应的 a 也会被修改(存储空间相同)
np.copy复制传值b = a.copy()b 数组与 a 相同,修改 b 中元素 a 不会被修改(存储空间不同)
np.empty创建空数组a = np.empty([3,2])创建形状为 (3, 2) 的随机数组
np.zeros创建全 0 数组a = np.zeros([3,2])创建形状为 (3, 2) 的全 0 数组
np.ones创建全 1 数组a = np.ones([3,2])创建形状为 (3, 2) 的全 1 数组
np.eye创建单位矩阵 I I Ia = np.eye(3)创建形状为 (3, 3) 的单位矩阵
np.arange在范围内创建数组a = np.arange(6)生成 [0 1 2 3 4 5] 的数组,该写法是省略起始和步长,写全应该是 a = np.arange(0, 6, 1),左闭右开
np.linspace在范围内创建等差数组a = np.linspace(0, 20, 5)生成 [ 0. 5. 10. 15. 20.] 的数组,左闭右闭,如果将 endpoint 值设为 False 则不包括终止点
np.logspace在范围内创建等比数组a = np.logspace(0,9,10,base=2)生成 [ 1. 2. 4. 8. 16. 32. 64. 128. 256. 512.] 的数组,左闭右闭,如果将 endpoint 值设为 False 则不包括终止点,基底(base)默认值为 10

属性

属性名功能代码示例解释说明
np.ndarray.ndim数组维度a.ndim输出数组维度,例如 [1. 2. 3. 4. 5.] 维度为 1
np.ndarray.shape数组形状a.shape输出数组形状,例如 [1. 2. 3. 4. 5.] 形状为 (5, )
np.ndarray.size数组大小a.size输出数组总的元素个数。如果是向量则输出长度,如果是矩阵则输出行列之积,例如 [1. 2. 3. 4. 5.] 大小为 5
np.ndarray.dtype数组数据类型a.dtype输出数组数据类型,例如 [1. 2. 3. 4. 5.] 数据类型为 float64
np.ndarray.base判断数组是否共享内存a.base is b.base复制传值、引用传值的 base 相同、切片的 base 不相同
np.ndarray.shape 或 np.shape查询数组形状a.shape 或 np.shape(a)例如五元组的向量则形状为 (5, ),如果是五元组的矩阵则形状为 (5, 1)
np.ndarray.T矩阵转置a.T得到 矩阵 a 的转置矩阵

切片(左闭右开)
A = [ 1.2.3.4.5.6. ] A=[1. 2. 3. 4. 5. 6.] A=[1.2.3.4.5.6.]
B = [ 1 2 3 4 5 6 7 8 9 ] (3) B= \left[ \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{matrix} \right] \tag{3} B=147258369(3)

示例功能输出
A[0]读取向量 A 的第一个数1
A[-1]读取向量 A 的倒数第一个数6
A[1: -1:2]读取向量 A 的第二个数到最后一个数(不包括最后一个),两个两个读[2 4]
A[1::2]读取向量 A 的第二个数到最后一个数,两个两个读[2 4 6]
B[1][2] 或 B[1, 2]读取矩阵 B 的第二行第三个数6
B[2, :]读取矩阵 B 的第三行全部[7 8 9]
B[::-1, ::-1]倒着输出矩阵 B[ [9 8 7][6 5 4][3 2 1] ]

更改

方法名功能代码示例解释说明
np.reshape改变数组形状a = np.zeros(9) b = a.reshape(3,3)有返回值且不会修改原数组,b 是形状为 (3, 3) 的全 0 数组,a 仍为 0 到 9 的向量
np.resize改变数组形状a = np.zeros(9) b=a.resize(3,3)无返回值且会修改原数组,b 为 None,a 是形状为 (3, 3) 的全 0 数组
np.concatenate数组拼接c = np.concatenate((a,b), axis=0)去掉 a 数组和 b 数组的最外围(第0层)然后拼接
np.split数组拆分a=np.array([[1, 2], [3, 4]]) b = np.split(a, 2)b 为包含 [1, 2] 和 [3, 4] 的二元组

判断

方法名功能代码示例解释说明
np.isclose判断两数相等np.isclose(0.333333, 1/3))返回 True,用于判断两个数的误差是否在相等的范围内,是则两数相等
np.allclose判断数组相等np.allclose([0.333333, 3.1415926], [1/3, np.pi]))返回 True,用于判断两个数组的每个元素之间误差是否在相等的范围内,是则两数组相等。如果使用 isclose 比较数组,则返回值为包含数组个数的 True/False 的数组。这是因为 isclose 是逐个比较,而 allclose 是全部比较完后生成一个 True/False

存取

方法名功能代码示例解释说明
np.save保存数组至文件np.save(“example”, np.arange(5))生成 [0, 4] 的数组并存储在名为 “example.npy” 的文件下,注意 “.npy” 后缀会自动生成
np.load读取数组文件y = np.load(“example.npy”)从文件中读取数组存放至变量 y 中,注意需要加上 “.npy” 后缀
np.savetxt保存数组至 .txt 文件np.save(“example.txt”, np.arange(5))生成 [0, 4] 的数组并存储在名为 “example.txt” 的文件下
np.loadtxt读取 .txt 数组文件y = np.load(“example.txt”)从文件中读取数组存放至变量 y 中
np.genfromtxt按头尾读取 .txt 数组文件y = np.genfromtxt(“example.txt”, skip_header=2, skip_footer=1)从文件中读取第二行到倒数第二行的数组存放至变量 y 中

2. 计算数学

方法名功能代码示例解释说明
np.pi常数 π \pi πa = np.pi获得常数 π = 3.141592653589793 \pi=3.141592653589793 π=3.141592653589793
np.e常数 e e ea = np.e获得常数 e = 2.718281828459045 e=2.718281828459045 e=2.718281828459045
np.sin正弦a = np.sin(np.pi/2)参数可以是数或者数组,注意括号里的参数为弧度
np.cos余弦a = np.cos(np.pi/2)参数可以是数或者数组,注意括号里的参数为弧度
np.tan正切a = np.tan(np.pi/2)参数可以是数或者数组,注意括号里的参数为弧度
np.round / np.around四舍五入a = np.round(4.50)参数可以是数或者数组,注意 4.50 四舍五入为 4.0,4.501 四舍五入为 5.0
np.floor向下取整a = np.floor(4.50)4.0,参数可以是数或者数组
np.ceil向上取整a = np.ceil(4.50)5.0,参数可以是数或者数组
np.power幂运算a = np.power(2, 4)16,参数可以是数或者数组
np.mod模运算a = np.mod(10, 3)1,参数可以是数或者数组
np.random随机数a = np.random.rand(10)随机生成 10 个 0 到 1 之间的伪随机数

3. 线性代数

方法名功能代码示例解释说明
*矩阵元素相乘a * b计算矩阵 a 与矩阵 b 的每个元素的乘积,乘完矩阵大小不变
np.dot点积c = np.dot(a,b)计算矩阵 a 与矩阵 b 的点积
np.vdot向量点积c = np.vdot(a,b)计算向量 a 与向量 b 的点积
np.inner内积c = np.inner(a,b)计算矩阵 a 与矩阵 b 的内积
np.matmul矩阵乘积c = np.matmul(a,b)计算矩阵 a 与矩阵 b 的乘积
la.norm矩阵的模n = la.norm(a)计算矩阵 a 的模长
la.inv逆矩阵b = la.inv(a)计算矩阵 a 的逆矩阵,逆矩阵点积为单位矩阵 I I I
la.det行列式b = la.det(a)计算矩阵 a 的行列式
la.solve求解 xx = la.solve(A, b)计算 Ax = b 的解
la.eig求特征值和特征向量eval, evec = la.eig(A)计算 A 的特征值和特征向量

4. 概率统计

方法名功能代码示例解释说明
np.mean平均数b = np.mean(a)计算 a 数组或列表的平均数
np.average加权平均数b = np.average(a,weights = wts)计算 a 数组或列表的加权平均数
np.median中位数b = np.median(a)计算 a 数组或列表的中位数
np.max最大值b = np.max(a)计算 a 数组或列表的最大值
np.min最小值b = np.min(a)计算 a 数组或列表的最小值
np.ptp最大最小差值b = np.ptp(a)计算 a 数组或列表的最大最小差值
np.var方差b = np.var(a)计算 a 数组或列表的方差
np.std标准差b = np.std(a)计算 a 数组或列表的标准差

持续更新中~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值