本文实例讲述了Python Numpy库常见用法。分享给大家供大家参考,具体如下:
Numpy是一个常用的Python科学技术库,通过它可以快速对数组进行操作,包括形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等。许多Python库和科学计算的软件包都使用Numpy数组作为操作对象,或者将传入的Python数组转化为Numpy数组,因此在Python中操作数据离不开Numpy。
Numpy的核心是ndarray对象,由Python的n维数组封装而来,但通过C语言预编译相关的数组操作,因此比原生Python具有更高的执行效率,但仍然使用Python语言编码,这样就同时具有简洁的代码和高效的运行速度。ndarry与数组有些区别值得注意,numpy数组中的元素都具有相同的类型,并且在创建时就确定了固定的大小,这与Python数组对象可以动态增长不同。
Numpy对象的形式是同构多维数组,数组的维度称为轴(axis),每个维度上元素的个数称为轴的长度。例如下面是一个2×3的二维数组arr,第一轴长度为3,第二轴长度为2
arr = [[ 1., 0., 0.], [ 0., 1., 2.]]
arr数组对象常用的属性如下:
# 数组轴的个数 arr.ndim # 数组维度及长度,例如2×3的数组其shape为(2, 3) arr.shape # 数组元素的总个数 arr.size # 数组中元素的数据类型 arr.dtype # 数组中元素所占字节数 arr.itemsize
可以通过array()方法包裹普通python数组将其转化为numpy数组,通过dtype=规定元素的数据类型。数组可以是二维等高维数组,也可以是元组的形式。
如果需要填充已知大小的数组可以使用函数zeros(),将元素都填充为0,或者ones()将元素填充为1,empty()将元素填充为随机数
arange(a,b,c)函数用于从a到b每隔c长度生成一个数组元素。linspace(a,b,c)函数用于在a到b之间生成c个数组元素
# 普通数组转化为numpy数组 a1 = np.array([2, 3, 4], dtype=float) print(a1) # 将元组数组转化为二维numpy数组 a2 = np.array([(1, 2, 3), (3, 4, 5)]) print(a2) # 将3×3的数组用1填充 a3 = np.ones((3, 3)) print(a3) # 从1到10,每隔2生成一个元素 a4 = np.arange(1, 10, 2) print(a4) # 在1到12之间生成4个元素 a5 = np.linspace(1, 12, 4, dtype=int) print(a5) ''' 普通数组转化为numpy对象: [2. 3. 4.] 元组数组: [[1 2 3] [3 4 5]] 用1填充数组: [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.]] 从1到10每隔2生成一个元素: [1 3 5 7 9] 在1到12之间生成4个元素: [ 1 4 8 12] '''
算术运算符可以直接运用在矩阵上,其结果是将运算应用到每个元素上,例如矩阵A*B就是每个元素对应相乘,矩阵的乘法运算使用的是@符号
A = np.array([[1, 1], [0, 1]]) B = np.array([[2, 0], [3, 4]]) print(A * B) print(A @ B) ''' 矩阵元素对应相乘: [[2 0] [0 4]] 矩阵的乘法: [[5 4] [3 4]] '''
numpy中有些函数应用于整个数组,例如求和sum、最大值max、最小值min。如果在这些参数中指定了某个轴,则应用于指定轴。
还有一些函数应用于数组中的具体元素,例如求sin、cos、exp、开方sqrt等,这些函数叫做通函数(ufunc)
a = np.array([[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]) print(a.max()) # 求整体的最大值,结果为11 print(a.sum(axis=0)) # 求每一列的和,结果为:[12 15 18 21] print(np.sqrt(a)) # 数组每个元素求开方