Numpy模块(科学计算)
主体:数据分析三剑客之numpy科学计算库
-
numpy简介
-
numpy前期准备
-
numpy数据结构
-
-
numpy其他功能

详情
-
numpy简介
Numpy是高性能科学计算和数据分析的基础包,也是pandas等其他数据分析工具的基础,具有多维数组功能,使运算更加高效迅速。
# 下载模块 在notebook中执行pip命令需要在语句前加上一个感叹号 !pip3 install numpy Anaconda也提供下载模块的工具(与pip一致) conda install numpy # 导入模块 import numpy as np # 更加倾向于起别名 np
-
numpy前期准备
""" notebook单元格左侧 In[*]表示当前单元格正在执行,执行完毕后*变回数字 """ # 身高 height = [159,163,165,172,180] # 体重 weight = [45,50,52,63,70] # BMI指数:身体质量指数=体重(kg)/身高(m)的平方 BMI = weight/(height/100)**2 '''事实上,会报错!'''
python与numpy效率对比
h = [] w = [] for i in range(100000000) h.append(random.randint(159,180)) w.append(random.uniform(45,81)) '''Python代码实现''' import time # 开始时间 startTime = time.time() for i in range(100000000): w[i]/(h[i]/100)**2 # 结束时间 endTime = time.time() # 求时间差 dealTime = endTime-startTime print(dealTime) '''Numpy模块实现(更加高效)''' import numpy as np H = np.array(h) W = np.array(w) # 利用数组进行运算 startTime = time.time() BMI = W/(H/100)**2 endTime = time.time() dealTime = endTime-startTime print(dealTime)

可以看到,numpy模块利用数组进行计算花费的时间更短 !!!
-
numpy数据结构
多维数组
一维数组:np.array([1,2,3,4])
二维数组(矩阵):np.array([[1,2,3,4],[5,6,7,8]])
三维数组(不常见):np.array([[[1,2,3,4],[5,6,7,8]]])
注意
1.numpy中同一个数组内所有元素的数据类型一致 # 布尔值可以直接转换为整型: 真>>>1,假>>>0 np.array([1,2,False]) >>> array([1, 2, 0]) # 数组中存在浮点型数据,所有整型都会转换为浮点型 np.array([1,2,3.1]) >>> array([1.,2.,3.1])


2.numpy操作数组的时候,同一个数组内的所有数据均参与操作 a1 = np.array([1,2,3,4]) a2 = np.array([7,8,9,1]) # a1+a2 a1所有数据与a2对应的数据相加 a1 + a2 >>> array([ 8, 10, 12, 5]) # a1*a2 a1所有数据与a2对应的数据相乘 a1 * 10 >>> array([10, 20, 30, 40])


-
numpy数据类型
避免与Python原本数据类型冲突,个别类型名称后跟下划线
1.布尔型: bool_
2.整型: int_、int8、int16、int32、int64
eg: int32只能表示(-2**31,2**31-1),因为它只有32个位,只能表示2**32个数
3.无符号整数: uint8、uint16、uint32、uint64
4.浮点型: float_、float16、float32、float64
5.复数型: complex_、complex64、complex128
可以看到,numpy数据类型以数字类型居多,由于该模块主要用于科学计算,只有数字可以参与。
-
numpy其他功能
常用属性
1、T:数组的转置(多维数组)
li1 = [ [1,2,3], [4,5,6] ] a = np.array(li1) a.T 把一个二维数组的行与列的数据进行互换,较为常用。

2、dtype:数组元素的数据类型
li1 = [ [1,2,3], [4,5,6.1] ] a = np.array(li1) # 查看类型 a.dtype

3、size:数组元素的个数
import numpy as np li1 = [ [1,2,3], [4,5,6.1] ] a = np.array(li1) # 查看数组中元素个数 a.size

4、ndim:数组维数
import numpy as np li1 = [ [1,2,3], [4,5,6.1] ] a = np.array(li1) # 查看数组维数 a.ndim

5、shape:数组的维度大小(返回元组)
import numpy as np li1 = [ [1,2,3], [4,5,6.1] ] a = np.array(li1) # 查看数组形状 a.shape

常用方法
1、查看某方法使用说明
(1)在方法后跟?执行即可
![]()
(2)在方法名后按住SHIFT再按TAB即可(第二次按TAB显示全部)
2、array():将列表转换为数组,可指定dtype
import numpy as np li1 = [ [1,2,3], [4,5,6.1] ] a = np.array(li1,dtype='float_') # 列表切换成数组,指定类型 a

3、arange():range在numpy下的版本,支持浮点数
import numpy as np a = np.arange(1,10,0.2) # 均匀分布 a

4、linspace():类似arange(),添加第三个参数控制数组长度
import numpy as np a = np.linspace(1.2,3.6,20) # 均匀分布 a

5、zeros():根据指定形状和dtype创建全0数组
import numpy as np a = np.zeros((3,6),dtype='float_') # 均匀分布 a

6、ones():根据指定形状和dtype创建全1数组
import numpy as np a = np.ones((6,2),dtype='float_') # 全一数组 a

7、empty():根据指定形状和dtype创建空数组(随机值)
import numpy as np a = np.empty((2,2),dtype='float_') # 空数组 a

8、eye():根据指定边长和dtype创建单位矩阵
import numpy as np a=np.eye(6,dtype='float_') # 单位矩阵 a

索引与切片
1、针对一维数组,numpy索引和切片操作与python中一致

2、花式索引(间断索引)

3、布尔值索引

4、针对二维数组索引与切片
res[行索引(切片),列索引(切片)]
可以用英文输入法的冒号获取二维数组的所有行或列元素

运算符
1、数学运算符
+ 数组对应元素的加和
- 数组对应元素的差
* 数组对应元素的乘积
/ 数组对应元素的商

% 数组对应元素商的余数
// 数组对应元素商的整除数
** 数组对应元素的幂指数
![]()
2、比较运算符
>
等价np.greater(a1,a2)
判断a1的元素是否大于a2的元素
>=
等价np.greater_equal(a1,a2)
判断a1的元素是否大于等于a2的元素
<
等价np.less(a1,a2)
判断a1的元素是否小于a2的元素
<=
等价np.less_equal(a1,a2)
判断a1的元素是否小于等于a2的元素
==
等价np.equal(a1,a2)
判断a1的元素是否等于arr2的元素
!=
等价np.not_equal(a1,a2)
判断a1的元素是否不等于a2的元素
![]()
函数
1、常用数学函数
np.round(arr) 对各元素四舍五入
np.sqrt(arr) 计算各元素的算术平方根
np.square(arr) 计算各元素的平方值
np.exp(arr) 计算以e为底的指数
np.power(arr, α) 计算各元素的指数

np.log2(arr) 计算以2为底各元素的对数
np.log10(arr) 计算以10为底各元素的对数
np.log(arr) 计算以e为底各元素的对数

2、常用统计函数
""" 注意: axis=0时,计算数组各列的统计值 axis=1时,计算数组各行的统计值 """
np.min(arr,axis) 按照轴的方向计算最小值
np.max(arr,axis) 按照轴的方向计算最大值
np.mean(arr,axis) 按照轴的方向计算平均值
np.median(arr,axis) 按照轴的方向计算中位数
np.sum(arr,axis) 按照轴的方向计算和
np.std(arr,axis) 按照轴的方向计算标准差
np.var(arr,axis) 按照轴的方向计算方差
随机数
numpy中的random子模块---np.random
rand 给定形状产生随机数组(0到1之间的数)
randint 给定形状产生随机整数
choice 给定形状产生随机选择
shuffle 与random模块的shuffle相同,将元素打乱
uniform 给定形状产生随机数组(随机均匀分布)
normal 随机正态分布







浙公网安备 33010602011771号