Python -- Numpy库的使用

Numpy库的使用

  要点:numpy是用于处理含有同种元素的多维数组运算的第三方库。

1.numpy库概述

  Python标准库中提供了一个array类型,用于保存数组类型数据,然而这个类型不支持多维数据,处理函数也不够丰富,不适合数值运算。因此,Python语言的第三方库numpy得到了迅速发展,至今,numpy已经成为了科学计算事实上的标准库。
  numpy库处理的最基础数据类型是由同种元素构成的多维数组(ndarray),简称“数组”。数组中所有元素的类型必须相同,数组中元素可以用整数索引,序号从0开始。ndarray类型的维度(dimensions)叫做轴(axes),轴的个数叫做秩(rank)。
  一维数组的秩为1,二维数组的秩为2,二维数组相当于由两个一维数组构成。
  由于numpy库中函数较多且命名容易与常用命名混淆,建议采用如下方式引用numpy库:

>>>import numpy as np

  其中,as保留字与import一起使用能够改变后续代码中库的命名空间,有助于提高代码可读性。简单地说,在程序的后续部分中,np代替numpy。

2.numpy库解析

  numpy库常用的创建数组(ndarray类型)函数共有7个,如表所示。

函数 描述
np.array([x,y,z], dtype=int) 从Python列表和元组创造数组
np.arange(x,y,i) 创建一个由x到y,以i为步长的数组
np.linspace(x,y,n) 创建一个由x到y,等分成n个元素的数组
np.indices((m,n)) 创建一个m行n列的矩阵
np.random.rand(m,n) 创建一个m行n列的随机数组
np.ones((m,n),dtype) 创建一个m行n列全1的数组,dtype是数据类型
np.empty((m,n),dtype) 创建一个m行n列全0的数组,dtype是数据类型

  创建一个简单的数组后,可以查看ndarray类的基本属性(共7个)

属性 描述
ndarrav.ndim 数组轴的个数,也被称作秩
ndarray shape 数组在每个维度上大小的整数元组
ndarray.size 数组元素的总个数
ndarray.dtype 数组元素的数据类型,dtype类型可以用于创建数组
ndarray.itemsize 数组中每个元素的字节大小
ndarray.data 包含实际数组元素的缓冲区地址
ndarray.flat 数组元素的达代器

使用实例如下:

>>>import numpy as np
>>>a = np.ones((4,5))
>>>print(a)
[[1.1.1.1.1.]
[1.1.1.1.1.]
[1.1.1.1.1.]
[1.1.1.1.1.]]
>>>a.ndim
2
>>>a.shape
(4,5)
>>>a.dtype
dtype('float64')

  下表给出了改变数组基础形态的操作方法,例如改变和调换数组维度等。其中,np.flatten()函数用于数组降维,相当于平铺数组中的数据,该功能在矩阵运算及图像处理中用处很大。
  ndarray类的形态操作方法(共5个):

方法 描述
ndarray.reshape(n,m) 不改变数组ndarray,返回一个维度为(n,m)的数组
ndarray.resize(new_shape) 与reshape0作用相同,直接修改数组ndarray
ndarray.swapaxes(axl,ax2) 将数组n个维度中任意两个维度进行调换
ndarray.flatten() 对数组进行降维,返回一个折叠后的一维数组
ndarray.ravel() 作用同np.flatten(),但是返回数组的一个视图

  下表给出丁ndarray类的素引和切片方法、数组切片得到的是原始数组的图,页有修改都会直接反映到源数组,如果需要得到ndaray 切片的一份副本,需要进后复觳操作,比如arange[5:8] copy()。
  ndarray类的素引和切片方法(共5个)

方法 描述
x[i] 素引第i个元素
x[-i] 从后向前索引第i个元素
x[n : m] 默认步长为1,从前计后索引,不包含m
x[-m : -n] 默认步长为1,从后往前索引,结束们置为n
x[n: m :i] 指定i步长的由n到m的素引

使用实例如下:

>>>a=np.random.rand(53#生成5×3的数组,用随机数填充
>>>>a[2]#获得第2行数据
array(1 0.78426574, 0.60171943, 0.98825306])
>>>a[1:3]
array(ll 0.49276756, 0.44735929, 0.10356773],
[ 0.78426574. 0.60171943, 0.98825306]])
>>>a[-5:-2:2]
array([[ 0.95517757, 0.3634953 , 0.34138831],
[ 0.78426574. 0.60171943, 0.988253061])

  除了ndarray类型方法外,numpy库提供了一批运算函数。表9.5列出了numpy库的算术运算函数,共8个。这些函数中,输出参数y可选,如果没有指定,将创建并返回一个新的数组保存计算结果;如果指定参数,则将结果保存到参数中。例如,两个数组相加可以简单地写为a+b,而np.add(a,b,a)则表示a+=b。
   numpy库的算术运算函数(共8个)

函数 描述
np.add(x1, x2 [,y]) y=x1+x2
np.subtract(x1,x2 [,y]) y=x1-x2
np.multiply(x1,x2 [,y])) y=x1x2
np.divide(x1, x2 [, y]) y=x1/x2
np floor_divide(x1, x2 [, y]) y=x1//x2.返回值取整
np.negative(x [,y]) y=-x
np.power(x1,x2[,y]) y=xl**x2
np.remainder(x1, x2 [, y]) y=x1%x2

  numpy库的比较运算函数(共7个)

函数 符号描述
np. equal(x1,x2 [,y]) y = x1 == x2
np.not_equal(x1,x2[,y]) y = x1 != x2
np. less(x1.×2.[,y]) y = x1 < x2
np. less_equal(x1, ×2, [, y]) y= x1 <= x2
np. greater(×1, x2,[, y]) y= x1 > x2
np. greater_equal(×1, ×2, [, y]) y = x1 >= x2
np.where(condition[x,y]) 根据给出的条件判断输出x还是y

  将返回一个布尔数组,它包含两个数组中对应元素值的比较结果,例了如下。whereO函数是三元表达式x if condition else y的矢量版本。

>>>np.less([1,2],[2,2])
array([ True, False], dtype=bool)

  numpy还有其他一些有趣而操作方便的函数。

  numpy库的其他运算函数(共9个)

函数 描述
np.abs(x) 计算基于元素的整型、浮点或复数的绝对值
np.sqrt(x) 计算每个元素的平方根
np.squre(x) 计算每个元素的平方
np.sign(x) 计算每个元素的符号:1(+)、0、-1(-)
np.ceil(x) 计算大于或等于每个元素的最小值
np.floor(x) 计算小于或等于每个元素的最大值
пр.rint(x[, оut)) 圆整,取每个元素为最近的整数,保留数据类型
пр.ехp(x[, оut)) 计算每个元素的指数值
np.log(x),np.log10(x),np.log2(x) 计算自然对数(e),基于10、2的对数,log(1+x)

  numpy库还包括三角运算函数、傅里叶变换、随机和概率分布、基本数值统计、位运算、矩阵运算等非常丰富的功能,读者在使用时可以到官方网站查询。
  拓展:运算规则
  实数的算术运算是最为常见的运算规则,类似的,矩阵也有算术运算。二个完备的运算体系包括运算基本单位和运算规则。在numpy中,运算基本单位是数组,运算规则与实数一样,包括算术运算、比较运算、统计运算、三角运算、随机运算等。numpy库的广泛使用与完备的运算体系密切相关。

你可能感兴趣的:(Python学习笔记,python,Numpy)