第六章. 图解数组计算模块Numpy
Numpy是Python数组计算,矩阵运算和科学计算的核心库,它的用途是以数组的形式对数据进行操作,由于Numpy是通过C语言实现的,所以运算速度比较快。
numpy.array(object,dtype=None,copy=True,order='K',subok=False,ndmin=0)
参数说明:
object:任何具有数据接口方法的对象
dtype:数据类型
copy:是否复制object对象,默认值True
order:元素在内存中的出现顺序,值为K(元素在内存中的出现顺序),A(原顺序),C(按行),F(按列)
subok:若值True,则将传递子类,否则返回基类,默认值为False
ndmin:指定生成数组的最小维数
·示例1:为数组指定数据类型
list = [1.1, 2.2, 3.7]
n1 = np.array(list, dtype=int)
n2 = np.array(list, dtype=float)
·示例2:数组的复制
n1 = np.array([1, 2, 3])
n2 = np.array(n1, copy=True)
n2[0] = 5
n2[1] = 4
·示例3:通过ndmin参数控制最小维数
list = [1, 2, 3]
n1 = np.array(list, ndmin=3)
n1 = np.empty([2, 3], dtype=float)
n1 = np.zeros([2, 3], dtype=float)
n1 = np.ones([2, 3], dtype=int)
n1 = np.full([3, 2], 6)
n1=np.eye(4)
arange函数同python内置的range函数相似,区别在于返回值,arange返回值是数组,range返回值是列表。
·语法:
numpy.arange([start,],stop[,step,],dtype=None)
参数说明:
start:起始值,默认值为0
stop:终止值(不包含)
step:步长,默认值为1
dtype:数据类型,不设置为数据的输入类型
·示例:
n1 = np.arange(0, 10, 2, dtype=float)
等差数列:如果一个数列从第二项起,每一项与前一项的差等于同一个常数
·语法:
numpy.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)
参数说明:
start:序列的起始值
stop:序列的终止值,如果endpoint=True,该值包含在序列中
num:要生成等步长的样本数量,默认值为50
endpoint:决定有区间是开区间还是闭区间,endpoint=True,闭区间
retstep:生成的数组中是否显示间距,retstep=True,显示间距
dtype:数组的数据类型
·示例:
n1 = np.linspace(-5, 5, 5)
等比数列:如果一个数列从第二项起,每一项与前一项的比值等于同一个常数
·语法:
numpy.logspace(start,stop,num=50,endpoint=True,base=10.0, dtype=None)
参数说明:
start:序列的起始值
stop:序列的终止值,如果endpoint=True,该值包含在序列中
num:要生成等步长的样本数量,默认值为50
endpoint:决定有区间是开区间还是闭区间,endpoint=True,闭区间
base:对数log的底数
dtype:数组的数据类型
·示例:
n1 = np.logspace(0, 9, 10, base=2, dtype=int)
随机数组的生成主要使用Numpy中的random模块。
rand函数用于生成(0,1)之间的随机数组,传入一个值随机生成一维数组,传入一对值随机生成二维数组。
·语法:
numpy.random.rand(d0,d0,d2,...,dn)
参数说明:
d0,d0,d2,…,dn:维度,整数,可以为0
·示例:
n1 = np.random.rand(5) # 一维数组
n1 = np.random.rand(5, 2) # 二维数组
randn函数用于从正态分布中返回随机生成的数组
·语法:
numpy.random.randn(d0,d0,d2,...,dn)
参数说明:
d0,d0,d2,…,dn:维度,整数,可以为0
·示例:
n1 = np.random.randn(5) # 一维数组
n1 = np.random.randn(5, 2) # 一维数组
randint函数用于生成一定范围内的随机数组,左闭右开,与np.arange函数类似。
·语法:
numpy.random.randint(low,high=None,size=None)
参数说明:
low:起始值,整数,当参数high不为空时,参数low<参数high,否则程序会出现错误
high:终止值,整数
size:数组维数,整数(表示一维数组),元组(表示多维数组),为空,返回一个整数
·示例:
n1 = np.random.randint(1, 10, 7) # 随机生成[1,10)之间的7个整数
n1 = np.random.randint(1, 10) # 随机生成[1,10)之间的一个整数(数组大小为空)
n1 = np.random.randint(10, size=(5, 2)) # 随机生成10以内的二维数组
normal函数用于生成正态分布的随机数
·语法:
numpy.random.normal(loc,scale,size)
参数说明:
loc:正态分布的均值,对应正态分布的中心,loc=0:说明是一个以y轴为对称轴的正态分布
scale:正态分布的标准差,,对应正态分布的宽度,scale越大,正态分布曲线越矮胖,scale越小,正态分布曲线越高瘦
size:数组的维数
·示例:
n1 = np.random.normal(0, 0.1, 10)
asarray函数用于创建数组,与array函数类似
·语法:
numpy.asarray(a,dtype=None,order=None)
参数说明:
a:可以是列表,列表的元组,元组,元组的元组,元组的列表或多维数组
dtype:数组的数据类型
order:数据元素在内存中出现的顺序
·示例:
n1 = np.asarray([1.1, 3.3, 2.2], dtype=float)
Numpy中的ndarray数组对象不能像Python列表一样动态的改变其大小,因此在做数据采集时不是很方便。frombuff函数可实现动态数组,frombuff函数接受buffer输入参数,以流的形式将读入的数据转换为数组。
·语法:
numpy.frombuffer(buff,dtype=float,count=-1,offset=0)
参数说明:
buff:实现了__buffer__方法的对象
dtype:数组的数据类型
count:读取的数据数量。默认值为-1:读取全部数据
offset:读取的起始位置,默认值为0
·示例:
n1 = np.frombuffer(b'pycharm', dtype='S1')
注意:当buffer参数值为字符串时,Python3版本默认字符串是Unicode类型,需转换成Byte string类型,需要在原字符串前加 b
fromiter函数用于从可迭代对象中建立数组对象。
·语法:
numpy.fromiter(iter, dtype, count=-1)
参数说明:
iter:可迭代对象
dtype:数组的数据类型
count:读取的数据数量,默认值为-1:读取所有数据
·示例:
iter = (x ** 2 for x in range(5))
n1 = np.fromiter(iter=iter, dtype='int')
用于创建一个与给定数组具有相同维度和数据类型且未初始化的数组。
·语法:
numpy.empty_like(prototype, dtype=None, order=None, subok=None, shape=None)
参数说明:
prototype:给定的数组
dtype:数组的数据类型
order:给定数组的内部布局,C(按行),F(按列), A (原顺序),K(数据元素在内存中出现的顺序)
subok:默认情况下返回基类数组,subok=True,返回子类
·示例:
n1 = np.empty_like([[1, 2], [3, 4], [5, 6]])
·语法:
numpy.zeros_like(a, dtype=None, order='K', subok=True, shape=None)
参数说明:
a:可以是列表,列表的元组,元组,元组的元组,元组的列表或多维数组
dtype:数组的数据类型
order:给定数组的内部布局,C(按行),F(按列), A (原顺序),K(数据元素在内存中出现的顺序)
subok:默认情况下返回基类数组,subok=True,返回子类
·示例:
n1 = np.zeros_like([[1, 2], [3, 4], [5, 6]], dtype=float)
·语法:
numpy.ones_like(a, dtype=None, order='K', subok=True, shape=None)
参数说明:
a:可以是列表,列表的元组,元组,元组的元组,元组的列表或多维数组
dtype:数组的数据类型
order:给定数组的内部布局,C(按行),F(按列), A (原顺序),K(数据元素在内存中出现的顺序)
subok:默认情况下返回基类数组,subok=True,返回子类
·示例:
n1 = np.ones_like([[1, 2], [3, 4], [5, 6]], dtype=int)
·语法:
numpy.full_like(a, fill_value, dtype=None, order='K', subok=True, shape=None)
参数说明:
a:可以是列表,列表的元组,元组,元组的元组,元组的列表或多维数组
fill_value:填充值
dtype:数组的数据类型
order:给定数组的内部布局,C(按行),F(按列), A (原顺序),K(数据元素在内存中出现的顺序)
subok:默认情况下返回基类数组,subok=True,返回子类
·示例:
n1 = np.full_like([[1, 2], [3, 4], [5, 6]], fill_value=6)