numpy科学计算库
目录
-
-
numpy前戏
-
numpy数据结构
-
numpy数据类型
-
numpy是高性能科学计算和数据分析的基础包,也是pandas等其他数据分析的工具的基础
numpy具有多维数组功能,运算更加高效快速
下载模块
在notebook中如果需要执行pip命令下载模块
或者在命令行的开头加上一个感叹号即可
!pip3 install numpy
其他方式
在安装完anaconda之后该软件也会给我们提供一个下载模块的工具 # conda使用方式与pip一致 conda install numpy
导入模块
import numpy import numpy as np # 起别名np使用更广泛
演示一
# 身高 height = [170,173,178,180,183] # 体重 weight = [76,65,70,77,75] '''求BMI指数:身体质量指数=体重(KG)/身高(m)的平方''' BMI = weight/(height/100)**2 # 报错
如何用python代码解决

演示二
数据准备
import random # 伪造数据 h = [] w = [] for i in range(100000000): h.append(random.randint(153,180)) w.append(random.uniform(51,88))
小知识
notebook单元格左侧如果是星号表示当前单元格正在执行
是数字表示执行完毕

1.纯python代码实现
import time # for循环计算 start_time = time.time() for i in range(100000000): w[i]/(h[i]/100) ** 2 end_time = time.time() - start_time end_time

2.numpy模块解决
import numpy as np H = np.array(h) W = np.array(w) # 数组运算 start_time = time.time() BMI = W/(H/100)**2 end_time = time.time() - start_time end_time

总结
# 使用numpy模块会比纯代码解决一些复杂的运算更加高效快速
1.一维数组

2.二维数组

3.特别要领
# numpy中同一个数组内所有数据数据类型肯定是一致的 np.array([1,2,False]) >>> array([1, 2, 0]) np.array([1,2,3.1]) >>> array([1.,2.,3.1])

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

1.布尔型 bool_
2.整型 int_ int8 int16 int32 int64 # int32只能表示(-2**31,2**31-1),因为它只有32个位,只能表示2**32个数
3.无符号整型 uint8 uint16 uint32 uint64
4.浮点型 float_ float16 float32 float64
5.复数型 complex_ complex64 complex128
总结
1.numpy数据类型以数字居多是因为它主要用于科学计算,只有数字可以参与计算 2.numpy数据类型后面加下划线是为了跟python数据类型关键字区分开
1.T
# 功能 数组的转置,就相当于是将行变成列,列变成行

2.dtype
数组元素的数据类型

3.size
数组元素的个数
4.ndim
数组的维数
5.shape
数组的维度大小(以元组形式)

1.如何查看某个方法的使用说明
方式1:在方法后面跟问号执行即可 方式2:写完方法名后先按shift不松开然后按tab即可(shift+tab) 再次摁下tab显示全部说明

2.array()
将列表转换为数组,可选择显式指定dtype

3.arange()
range的numpy版,支持浮点数

4.linspace()
类似arange(),第三个参数为数组长度 总结 # 这个方法与arange有一些区别,arange是顾头不顾尾 # 这个方法是顾头又顾尾,在1到10之间生成的二十个数每个数字之间的距离相等的,前后两个数做减法肯定相等

5.zeros()
根据指定形状和dtype创建全0数组

6.ones()
根据指定形状和dtype创建全1数组

7.empty()
根据指定形状和dtype创建空数组(随机值)

8.eye()
根据指定边长和dtype创建单位矩阵

1.针对一维数组 索引与切片操作跟python中的列表完全一致

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

3.布尔值索引(逻辑索引)

4.针对二维数组索引与切片
# res[行索引(切片),列索引(切片)] 如果需要获取二维数组的所有行或列元素 那么对应的行索引或列索引,需要用英文状态的冒号表示

res[3,3] # 18

res[3,:] # array([12, 14, 16, 18]) res[:,1] # array([ 3, 4, 13, 14, 101])

res[0:2,1:3] # array([[3,5],[4,6]])

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

% 数组对应元素商的余数 // 数组对应元素商的整除数 ** 数组对应元素的幂指数

2.比较运算符
> 等价np.greater(arr1,arr2) 判断arr1的元素是否大于arr2的元素 >= 等价np.greater_equal(arr1,arr2) 判断arr1的元素是否大于等于arr2的元素 < 等价np.less(arr1,arr2) 判断arr1的元素是否小于arr2的元素 <= 等价np.less_equal(arr1,arr2) 判断arr1的元素是否小于等于arr2的元素 == 等价np.equal(arr1,arr2) 判断arr1的元素是否等于arr2的元素 != 等价np.not_equal(arr1,arr2) 判断arr1的元素是否不等于arr2的元素

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.常用的统计函数
np.min(arr,axis) 按照轴的方向计算最小值 ''' 注意: axis=0时,计算数组各列的统计值 axis=1时,计算数组各行的统计值 '''

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号