• 【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[

    123456789" role="presentation" style="text-align: center; position: relative;">123456789
    \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 数组或列表的标准差

    持续更新中~

  • 相关阅读:
    SAP ABAP WITH语法
    算法 Hw8
    跟TED演讲学英文:Entertainment is getting an AI upgrade by Kylan Gibbs
    【PyTorch】基础知识及常用操作
    含文档+PPT+源码等]精品基于PHP实现的高校兼职招聘系统-前台Uniapp[包运行成功]计算机PHP毕业设计项目源码
    0909hw
    网络安全—综合渗透测试-CVE-2010-2883-PDF漏洞分析
    三丰云免费服务器
    云时代全光底座架构及关键技术
    1.30.Flink SQL案例将Kafka数据写入hive
  • 原文地址:https://blog.csdn.net/qq_42950838/article/details/126471766