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、转换列表、元组、对象成数组

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

2、一维数组

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

 3、二维数组

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

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

4、等差数组

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

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

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

6、随机数组

np.random.randint(0,50,5)#随机数组,5个0到50之间的数字
np.random.randint(0,50,(3,5))#3行5列
np.random.rand(10)#10个介于[0,1)的随机数
np.random.standard_normal(5)#从标准正态分布中随机采样5个数字
x = np.random.standard_normal(size=(2,4,3))#3页4行2列
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、函数用法演示

import numpy as np

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


三、修改数组元素值 

 1、概念

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

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

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

2、追加、插入元素

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

3、修改元素

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

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

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

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

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

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


 广播思想

1、例如

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

2、可广播的条件

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

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


四、数组与标量的运算

1、概念

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

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

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

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

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

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

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

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

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


 五、数组与数组的运算

1、概念

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

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

2、加减

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

 3、乘除、次幂

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

  • 8
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五秒法则

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值