一、NumPy介绍
NumPy是一个开源的Python科学计算库,能够直接对数组和矩阵进行操作,可以省略很多循环语句,众多的数学函数也会让编写代码的工作轻松许多。
二、Numpy的安装
Numpy的安装
1.pip install numpy
2.conda install numpy(清华源:https://pypi.tuna.tsinghua.edu.cn/simple)
Numpy的导入:
import numpy as np
三、Ndarray对象
Ndarray: N维数组。
它是一系列同类型数据的集合,以0下标为开始进行集合中元素的索引。用于存放同类型元素的多维数组。
四、创建Ndarray数组对象
1、array()函数:
作用:创建Ndarray数组对象
2、empty()函数:
作用:创建一个指定形状(shape)、数据类型(dtype )且末初始化的数组
3、zeros()函数:
作用:创建指定大小的数组,数组元素以0来填充。
4、ones()函数:
作用:创建指定元素的数组,数组元素以来填充。
5、 full()函数:
作用:创建指定形状的数组,数组元素以fill-value来填充。
6、eye()函数:
作用:对角线为1其他的位置为0
7、arange()函数:
作用:创建数值范围并返回ndarray对象,根据start与stop指定的范围以及step设定的步长,生成一个ndarray。
8、frombuffer()函数:
作用:用于实现动态数组,接受buffer输入参数,以流的形式读入转化成ndarray对象。
9、linspace()函数:
作用:创建一个一维数组,数组是一个等差数列构成的。
10、logspace()函数:
作用:创建一个等比数列。
11、random.rand()函数:
作用:生成[0,1)之间的随机数。
12、random.random()函数:
作用:生成[0,1)之间的随机数。
注意:不能传两个参数,只能创建一维数组
13、random.randint()函数:
作用:生成随机数。
14、random.randn()函数:
作用:返回一个或一组样本,具有标准正态分布。
标准正态分布:又称u分布,是以0为均值、以1为标准差的正态分布,记为N(0,1)
15、random.normal()函数:
生成高斯分布的概率密度随机数。
练习:
#1、生成一个3*3的对角矩阵
import numpy as np
arr = np.eye(3,dtype='i4')
print(arr)
#2、创建一个长度为10的数组,值为0~1之间,不包含首位
import numpy as np
Z = np.linspace(0,1,11,endpoint=False)[1:]
print(Z)
#3、创建一个长度为10的0数组,第5个值为1
import numpy as np
Z = np.zeros(10)
Z[4] = 1
print(Z)
五、numpy数组与python中列表的对比
六、Ndarray数组属性
1、ndim:秩,即轴的数量或维度的数量。
2、shape:数组的维度,对于矩阵,n行m列。
3、size:数组元素的总个数,相当于.shape中n*m的值。
4、dtype:ndarray对象的元素类型。
练习:创建一个2*3的二维数组。并分别输出它的维度、行数和列数、元素个数。
#创建一个2*3的二维数组。并分别输出它的维度、行数和列数、元素个数
import numpy as np# 创建二维数组
nd_two = np.array([[1, 2, 3], [4, 5, 6]])
print(nd_two)
print('nd_two.shape =', nd_two.shape)
print(nd_two.size)
七、切片和索引
ndarray对象的内容可以通过索引或切片来访问和修改,与Python中list的切片操作一样。
ndarray数组可以基于0- n的下标进行索引,切片对象可以通过内置的slice函数,并设置start, stop及step参数进行,从原数组中切割出一个新数组。
切片还可以包括省略号“...”,来使选择元组的长度与数组的维度相同。
练习:1.给定一个6*7*8的三维矩阵,求100个元素的索引是什么?
2.如何交换二维数组中的两列?
#给定一个6*7*8的三维矩阵,求100个元素的索引是什么?
import numpy as np
print(np.unravel_index(99,(6,7,8)))
# 如何交换二维数组中的两列?
import numpy as np
arry = np.random.randint(1,10,size=(2,3))
print(arry)
print(arry[:,::-1])