python之numpy库
Posted 才华充电中
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之numpy库相关的知识,希望对你有一定的参考价值。
一、numpy概述
numpy(Numerical Python)提供了python对多维数组对象的支持:ndarray,具有矢量运算能力,快速、节省空间。numpy支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
基本功能:
- 快速高效的多维数组对象ndarray
- 用于对数组执行元素级计算以及直接对数组执行数学运算的函数
- 用于读写硬盘上基于数组的数据集的工具
- 线性代数运算、傅里叶变换、以及随机数生成
- 用户将c、c++、Fortran代码集成到Python的工具
- 除了为Python提供快速的数组处理能力,NumPy在数据分析方面还有另外一个主要作用,即作为在算法之间传递数据的容器
二、创建ndarray数组
ndarray:N维数组对象(矩阵),所有元素必须是相同类型。
ndarray属性:ndim属性,表示维度个数;shape属性,表示各维度大小;dtype属性,表示数据类型。
创建ndarray数组函数:
三、指定ndarray数组元素的类型
NumPy数据类型:
四、ndarray的矢量化计算
矢量运算:相同大小的数组键间的运算应用在元素上
矢量和标量运算:“广播”— 将标量“广播”到各个元素
五、ndarray数组的基本索引和切片
切片就是使用数组的索引将数组切分为多个数组
一维数组的索引:与Python的列表索引功能相似
多维数组的索引:
- arr[r1:r2, c1:c2]
- arr[1,1] 等价 arr[1][1]
- [:] 代表某个维度的数据
1 import numpy as np 2 3 arr = np.array([[1,2],[3,4],[5,6],[7,8]]) 4 print(\'获得大于等于0,小于3的元素:\',arr[0:3]) 5 print(\'获得对应索引的数据:\',arr[1,1]) 6 print(\'获得对应索引的数据:\',arr[0:2,0:1]) 7 8 结果: 9 获得大于等于0,小于3的元素: [[1 2] 10 [3 4] 11 [5 6]] 12 获得对应索引的数据: 4 13 获得对应索引的数据: [[1] 14 [3]]
六、ndarray数组的布尔索引和花式索引
布尔索引:使用布尔数组作为索引。arr[condition],condition为一个条件/多个条件组成的布尔数组。
花式索引:使用整型数组作为索引。
1 import numpy as np 2 3 # 布尔索引 4 arr = np.array([[1,2],[3,4],[5,6],[7,8]]) 5 bl_arr = np.array([True,False,True,True]) 6 print(\'获得对应布尔索引的数据:\',arr[bl_arr,0:1]) 7 8 # 花式索引 9 arr = np.array([[1,2],[3,4],[5,6],[7,8]]) 10 bl_arr = np.array([1,2,1,1]) 11 print(\'获得对应花式索引的数据:\',arr[bl_arr==1,0:1]) 12 13 结果: 14 获得对应布尔索引的数据: [[1] 15 [5] 16 [7]] 17 获得对应花式索引的数据: [[1] 18 [5] 19 [7]]
七、ndarray数组的转置和轴对换
数组的转置/轴对换只会返回源数据的一个视图,不会对源数据进行修改。
1 import numpy as np 2 3 arr = np.arange(12).reshape((3, 2, 2)) 4 print (\'矩阵\',arr) 5 print (\'转置矩阵\',arr.T) 6 print (\'第0个和第1个坐标互换\',arr.transpose((1, 0, 2))) 7 print (\'直接交换第0和第1个坐标\',arr.swapaxes(0, 1)) 8 9 结果: 10 矩阵 [[[ 0 1] 11 [ 2 3]] 12 13 [[ 4 5] 14 [ 6 7]] 15 16 [[ 8 9] 17 [10 11]]] 18 转置矩阵 [[[ 0 4 8] 19 [ 2 6 10]] 20 21 [[ 1 5 9] 22 [ 3 7 11]]] 23 第0个和第1个坐标互换 [[[ 0 1] 24 [ 4 5] 25 [ 8 9]] 26 27 [[ 2 3] 28 [ 6 7] 29 [10 11]]] 30 直接交换第0和第1个坐标 [[[ 0 1] 31 [ 4 5] 32 [ 8 9]] 33 34 [[ 2 3] 35 [ 6 7] 36 [10 11]]]
八、ndarray通用函数
通用函数(ufunc)是一种对ndarray中的数据执行元素级运算的函数。
一元ufunc:
二元ufunc:
九、NumPy的where函数使用
np.where(condition, x, y),第一个参数为一个布尔数组,第二个参数和第三个参数可以是标量也可以是数组。
1 import numpy as np 2 3 x_arr = np.array([1.1, 1.2, 1.3, 1.4, 1.5]) 4 y_arr = np.array([2.1, 2.2, 2.3, 2.4, 2.5]) 5 cond = np.array([True, False, True, True, False]) 6 result = [(x if c else y) for x, y, c in zip(x_arr, y_arr, cond)] # 通过列表推到实现 7 print(result) 8 print(np.where(cond, x_arr, y_arr)) 9 10 结果: 11 [1.1, 2.2, 1.3, 1.4, 2.5] 12 [1.1 2.2 1.3 1.4 2.5]
十、ndarray常用的统计方法
可以通过这些基本统计方法对整个数组/某个轴的数据进行统计计算。
用于布尔数组的统计方法:
- sum : 统计数组/数组某一维度中的True的个数
- any: 统计数组/数组某一维度中是否存在一个/多个True
- all:统计数组/数组某一维度中是否都是True
使用sort对数组/数组某一维度进行就地排序(会修改数组本身)。
十一、ndarray数组的去重以及集合运算
十二、numpy中的线性代数
import numpy.linalg 模块。线性代数(linear algebra)
常用的numpy.linalg模块函数:
十三、numpy中的随机数生成
import numpy.random模块。
常用的numpy.random模块函数:
以上是关于python之numpy库的主要内容,如果未能解决你的问题,请参考以下文章