• Python之numpy数组篇(上)


    目录

    numpy的概念

    一、创建数组

    1、转换列表、元组、对象成数组

    2、一维数组

     3、二维数组

    4、等差数组

    5、单位矩阵、对角矩阵、空数组

    6、随机数组

     二、测试元素是否接近

    1、概念

    2、isclose()函数

    3、allclose()函数

    4、函数用法演示

    三、修改数组元素值 

    1、概念

    2、追加、插入元素

    3、修改元素

    广播思想

    1、例如

    2、可广播的条件

    四、数组与标量的运算

    1、概念

    2、加、减、乘、除、幂、余数

     五、数组与数组的运算

    1、概念

    2、加减

     3、乘除、次幂


    numpy的概念

    numpy是python支持科学计算的重要扩展库,提供了强大的N维数组及其相关运算、复杂的广播函数等功能,掌握numpy的使用,是为学习数据分析机器学习打下良好的基础

    注意:本章代码例子,大多省略numpy的引入,小伙伴们演示时记得先导入🧐:

    import numpy as np

    一、创建数组

    1、转换列表、元组、对象成数组

    1. np.array([1,2,3,4,5])#把列表转换为数组
    2. np.array((0,1,2,3,4))#把元组转换为数组
    3. np.array(range(5))#把range对象转换为数组
    4. np.arange(8)#类似于内置函数range()

    2、一维数组

    1. np.zeros(3)#全0一维数组
    2. np.ones(3)#全1一维数组

     3、二维数组

    1. np.array([[1,2,3],[4,5,6]])#二维数组
    2. np.zeros((3,3))#全0二维数组,3行3列
    3. np.zeros((3,1))#全0二维数组,3行1列
    4. np.ones((3,3))#全1二维数组
    5. np.ones((1,3))#全1二维数组

     注意:一维数组小括号内是数值二维数组小括号内是元组、列表等,即一维数组仅一对小括号,二维数组会有多对括号

    4、等差数组

    1. np.linspace(0,10,11)#等差数组,包含11个数
    2. np.linspace(0,10,11,endpoint=False)#不包含终点
    3. np.logspace(0,100,10)#相当于10**np.linspace(0,100,10)
    4. np.logspace(1,6,5,base=2)

    5、单位矩阵、对角矩阵、空数组

    1. np.identity(3)#单位矩阵
    2. np.diag([1,2,3,4])#对角矩阵
    3. np.empty((3,3))#空数组,只申请空间,不初始化

    6、随机数组

    1. np.random.randint(0,50,5)#随机数组,5个0到50之间的数字
    2. np.random.randint(0,50,(3,5))#3行5列
    3. np.random.rand(10)#10个介于[0,1)的随机数
    4. np.random.standard_normal(5)#从标准正态分布中随机采样5个数字
    5. x = np.random.standard_normal(size=(2,4,3))#3页4行2列
    6. x

     二、测试元素是否接近

    1、概念

    扩展库numpy提供了isclose()和allclose()函数,测试两个数组对应位置上的元素在允许误差范围内是否相等,并可以接收绝对误差参数相对误差参数

    2、isclose()函数

    (1)用来测试每一对元素是否相等并返回包含若干True/False的列表

    (2)格式

    isclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)

    3、allclose()函数

    (1)用来测试所有对应位置上的元素是否都相等并返回单个True或False

    (2)格式

    allclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)

    4、函数用法演示

    1. import numpy as np
    2. x = np.array([1,2,3,4.001,5])
    3. y = np.array([1,1.999,3,4.01,5.1])
    4. print(np.allclose(x,y))
    5. print(np.allclose(x,y,rtol=0.2)) #设置相对误差参数
    6. print(np.allclose(x,y,atol=0.2)) #设置绝对误差参数
    7. print(np.isclose(x,y))
    8. print(np.isclose(x,y,atol=0.2))


    三、修改数组元素值 

     1、概念

    numpy支持多种方式修改数组中元素的值

    (1)可以append()、insert()函数在原数组的基础上追加插入元素并返回新数组

    (2)也可以用下标的方式直接修改数组中一个或多个元素的值

    2、追加、插入元素

    1. x = np.arange(8)
    2. x
    3. np.append(x,8) #返回新数组,在尾部追加一个元素
    4. np.append(x,[9,10]) #返回新数组,在尾部追加多个元素
    5. np.insert(x,1,8) #返回新数组,插入元素
    6. x #不影响原来的数组

    3、修改元素

    (1)一维数组的单个元素值修改

    1. x = np.arange(8)
    2. x[3] = 8 #使用下标的形式原地修改元素值
    3. x #原来的数组被修改了

     (2)二维数组的单个元素及切片式修改

    1. x = np.array([[1,2,3],[4,5,6],[7,8,9]])
    2. x[0,2] = 4 #修改第0行第2列的元素值
    3. x[1:,1:] = 1 #切片,把行和列下标都大于等于1的元素值都设为1
    4. x

    (3)二维数组同时修改多个元素

    1. x[1:,1:] = [1,2] #同时修改多个元素值,此处运用了广播思想
    2. x
    3. x[1:,1:] = [[1,2],[3,4]] #同时修改多个元素值
    4. x


     广播思想

    1、例如

    修改值与选中修改值列数相同时,进行广播,即将原来[1 2]行广播为 \begin{bmatrix} 1 & 2\\1 & 2 \end{bmatrix}

    2、可广播的条件

    (1)数组在某维度上元素的长度相等

    (2)数组在某维度上元素的长度为1


    四、数组与标量的运算

    1、概念

    (1)numpy中的数组支持与标量的加、减、乘、除、幂运算

    (2)计算结果为一个新数组,其中每个元素为标量与原数组中每个元素进行计算的结果,注意标量在前和后时计算的方法是不同的,且原数组值不变

    2、加、减、乘、除、幂、余数

    (1)加法:注意区别普通列表加法拼接,而numpy的加法是数组每个元素的值分别与数值相加运算后生成新的数组

    1. x + 2 #数组与数组相加
    2. print([1,2,3,4] + [2]) #普通列表的加法

    (2)乘除:注意区别普通列表乘法重复,而numpy的乘法是数组每个元素的值分别与数值相乘运算后生成新的数组

    1. x * 2 #数组与数值相乘,返回新数组
    2. print([1,2,3,4,5] * 2) #普通列表的乘法
    3. x / 2 #数组与数值相除
    4. x // 2 #数组与数值整除
    5. 2 / x
    6. 63 // x

     (3)幂运算,余数,次方运算

    1. x ** 3 #幂运算
    2. x % 3 #余数
    3. 2 ** x #分别计算2**1、2**2、2**3、2**4、2**5


     五、数组与数组的运算

    1、概念

    (1)两个数组等长时,进行算术运算后,会得到一个新数组,新数组每个元素值为原来两个数组对应位置上元素进行运算的结果

    (2)两个数组不等长时,如果符合广播要求则进行广播再做运算,否则报错并结束运行

    2、加减

    1. np.array([1,2,3,4]) + np.array([4,3,2,1]) #等长数组相加,对应元素的值相加
    2. np.array([1,2,3,4]) + np.array([4]) #数组中每个元素的值加4
    3. a = np.array((1,2,3))
    4. a + a #等长数组之间的加法运算,对应元素值相加
    5. a - a #等长数组之间的加法运算,对应元素值相减
    6. b = np.array(([1,2,3],[4,5,6],[7,8,9]))
    7. a + b #不同维度的数组与数组相加,先做广播再做运算

     3、乘除、次幂

    1. a * a #等长数组之间的乘法运算,对应元素值相乘
    2. a / a #等长数组之间的除法运算,对应元素值相除
    3. a ** a ##等长数组之间的幂运算,对应元素值乘方
    4. c = a * b
    5. c #不同维度,广播,a中的每个元素乘以b中对应列的元素,a中下标0的元素乘以b中列下标0的元素,以此类推

  • 相关阅读:
    用Python绘制简单曲线的几个方法
    redis_two
    创新案例分享 | 一体化政务服务平台运维项目,全力提升平台服务效能
    Qt怎么把背景转换为黑色?
    分布式事务
    视频监控这样做,简单又高效!
    (Vue2版本)Uniapp编写H5项目
    剑指 Offer 05. 替换空格
    SSM网上在线校园商城平台网站
    javaweb足球资讯网站
  • 原文地址:https://blog.csdn.net/qq_51478745/article/details/127401026