python numpy库作用_python数据分析之numpy库

一、numpy概述

numpy(Numerical Python)提供了python对多维数组对象的支持:ndarray,具有矢量运算能力,快速、节省空间。numpy支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

基本功能:

快速高效的多维数组对象ndarray

用于对数组执行元素级计算以及直接对数组执行数学运算的函数

用于读写硬盘上基于数组的数据集的工具

线性代数运算、傅里叶变换、以及随机数生成

用户将c、c++、Fortran代码集成到Python的工具

除了为Python提供快速的数组处理能力,NumPy在数据分析方面还有另外一个主要作用,即作为在算法之间传递数据的容器

二、创建ndarray数组

ndarray:N维数组对象(矩阵),所有元素必须是相同类型。

ndarray属性:ndim属性,表示维度个数;shape属性,表示各维度大小;dtype属性,表示数据类型。

创建ndarray数组函数:

python numpy库作用_python数据分析之numpy库_第1张图片

三、指定ndarray数组元素的类型

NumPy数据类型:

python numpy库作用_python数据分析之numpy库_第2张图片

四、ndarray的矢量化计算

矢量运算:相同大小的数组键间的运算应用在元素上

矢量和标量运算:“广播”— 将标量“广播”到各个元素

五、ndarray数组的基本索引和切片

切片就是使用数组的索引将数组切分为多个数组

一维数组的索引:与Python的列表索引功能相似

多维数组的索引:

arr[r1:r2, c1:c2]

arr[1,1] 等价 arr[1][1]

[:] 代表某个维度的数据

1 importnumpy as np2

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 importnumpy as np2

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 importnumpy as np2

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:

python numpy库作用_python数据分析之numpy库_第3张图片

二元ufunc:

python numpy库作用_python数据分析之numpy库_第4张图片

九、NumPy的where函数使用

np.where(condition, x, y),第一个参数为一个布尔数组,第二个参数和第三个参数可以是标量也可以是数组。

1 importnumpy as np2

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常用的统计方法

可以通过这些基本统计方法对整个数组/某个轴的数据进行统计计算。

python numpy库作用_python数据分析之numpy库_第5张图片

用于布尔数组的统计方法:

sum : 统计数组/数组某一维度中的True的个数

any: 统计数组/数组某一维度中是否存在一个/多个True

all:统计数组/数组某一维度中是否都是True

使用sort对数组/数组某一维度进行就地排序(会修改数组本身)。

十一、ndarray数组的去重以及集合运算

python numpy库作用_python数据分析之numpy库_第6张图片

十二、numpy中的线性代数

import numpy.linalg 模块。线性代数(linear algebra)

常用的numpy.linalg模块函数:

python numpy库作用_python数据分析之numpy库_第7张图片

十三、numpy中的随机数生成

import numpy.random模块。

常用的numpy.random模块函数:

python numpy库作用_python数据分析之numpy库_第8张图片

你可能感兴趣的:(python,numpy库作用)