1.1 numpy
NumPy(Numerical Python)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
num - numerical 数值化的
py - python
1.1.1 numpy优势
Python的一个科学计算库,用于快速处理任意维度的数组。常用于数组和矩阵操作。
ndarray(下文中的array均为ndarray)
n - 任意个
d - dimension 维度
array - 数组
与List对比
1)numpy的计算速度和效率比List高效
2)存储方式不同
ndarray - 相同类型 - 通用性不强
List - 不同类型 - 通用性强
3)ndarray支持向量化运算
4)底层语言
C语言,解除了GIL(全局解释器锁),效率高
1.1.2 ndarray的属性
np.shape 数组维度的元组
np.ndim 数组维度
np.size 数组中的元素数量
np.itemsize 一个数组元素的长度(字节)
np.dtype 数组元素的类型(默认为int64)
1.1.3 数组的创建
Import numpy as np
X = np.array([],dtype=”float32”(或者dtype=np.float32))
1)生成0和1数组
np.zeros(shape=(a,b),dtpye=np.float32)
np.ones(shape=(a,b),dtpye=np.float32)
2)从现有数组生成
np.array()
np.asarray() 浅拷贝
np.copy(array) 深拷贝,跟随array一起变化,其他两个不变
3)生成固定范围的数组(切片)
np.linspace(a,b,c)
[a,b] 为区间,元素之间为等距离,c为个数
np.arange(a,b,c)
.range(a,b,c)
[a,b) 为区间,c是步长
4)生成随机数组
均匀分布:np.random.uniform(low=a,high=b,size=None)
a最小值,b最大值,c个数
正态分布:np.random.normal(loc=a,scale=b,size=None)
loc:float 此概率的均值
scale:float 标准差
size:输出的数量,默认为None
1.1.4 数组的索引、切片
例如:array[a,b:c] 数组中a行中第b+1列到c+1列的元素
1.1.5 数组的形状修改
array.reshape(shape) 返回新的array,原始值不变
.resize(shape) 没有返回值,原始值变了
.T 转置
1.1.6 类型修改
array.astype(dtype) 例如:.astype(“int32”) 序列化到本地
.tostring() 转换为bytes
注意:在jupyter中会由于输出过长无法显示出来
1.1.7数组去重
np.unique(array) 去掉数组内重复的元素
set(array.flatten())
1.1.8 ndarray运算
逻辑运算
array > a 数组中大于a的元素变为True,否则为false
array(array > a) 只展示大于a的元素
array(array > a) = 1 大于a的元素都会变为1,其余不变
通用判断函数:
np.all(布尔值) 例:np.all(array(a:b,c:d) > 0) 有一个为False就返回false
np.any(布尔值) 有一个为True就返回True
三元运算符
np.where(array > 0,1,0) 在数组中大于0的元素置为1,否则置为0
np.logical_and(array>a,array<b) 都满足为true,否则为false
np.logical_or(array>a,array<b) 满足其一就为true,否则为false
复合使用:np.where(np.logical_or(array>a,array<b),1,0)