这一篇博文是【 AI学习路线图】系列文章的其中一篇,点击查看目录:AI学习完整路线图
1.简介
Numpy是Numerical Python的简称,即数值Python包,是Python进行科学计算的一个基础包,主要包括:
- 一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组,称为ndarray。
- 用于对整数数据进行快速运算的标准数学函数ufunc。
- 实用的线性代数、傅里叶变换、随机数生成函数
- Numpy和稀疏矩阵运算包Scrpy配合使用更方便
2.ndarray
ndarry(N-dimensional array)是N维数组,是numpy中的核心数据结构,是一种由相同类型的元素组成的多维数组,元素的个数是事先定好的,元素的类型由dtype对象指定。
2.1创建ndarray
2.2 其他创建ndarray方法
3 NumPy的数据类型
3.1 基本数据类型
数据类型 | 类型简写 | 说明 |
---|
int_ | | 整形 |
intc | | 等价于long的整形 |
int8 | i1 | 1个字节,范围[-128,127] |
int16 | i2 | 2个字节,范围[-215 , 215 -1] |
int32 | i3 | 4个字节,范围[-231 , 231 -1] |
int64 | i4 | 8个字节,范围[-263 , 263 -1] |
uint8 | u1 | 无符号整形,1个字节,范围[0, 28] |
uint16 | u2 | 无符号整形,2个字节,范围[0 , 216 -1] |
uint32 | u3 | 无符号整形,4个字节,范围[0 , 232 -1] |
uint64 | u4 | 无符号整形,8个字节,范围[0 , 264 -1] |
bool_ | | 以一个字节存储布尔值 |
float_ | | float64简写形式 |
float16 | f2 | 半精度浮点型(2个字节) |
float32 | f4或者f | 单精度浮点型,4个字节 |
float64 | f8或者d | 双精度浮点型,8个字节 |
complex_ | c16 | complex128的简写形式 |
complex64 | c8 | 复数,由两个32位的浮点数表示 |
complex128 | c16 | 复数,由两个64位的浮点数来表示 |
object | O | Python对象类型 |
String_ | S | 固定长度的字符串类型(每个字符一个字节),如:要创建长度为8的字符串,应该使用S8 |
Unicode_ | U | 固定长度的unicode类型字符串(每个字符占用的字节数由平台决定) |
3.2 ndarray修改形状
4. NumPy基本操作
4.1 数组与标量、数组之间的运算
数组相乘举例
4.2 数组的矩阵积
4.3 数组的索引与切片
对一个多维数组的索引是通过行编号和列编号来进行的,编号从0开始。
切片是对原数组的一个视图,而不是一个副本,所有对切面的修改,也会影响到原数组,看下面这个例子:
还有一种索引方式是布尔类型索引,要求用一个和被索引数组形状一致的数组去索引,这个数组的值都为布尔值类型,看下面这个例子:
布尔类型索引的实例:
花式索引:
举例:
交换矩阵的其中两行
4.4 数组的转置与轴对换
数组转置是将shape进行重置操作,并将其值重置为原始shape元组的倒置,比如原来是(2,3,4),转置后的形状就是(4,3,2)。
对于二维数组(矩阵)而言,转置就是矩阵的转置,即行变列、列变行。
transpose函数或者T属性是对数组进行转置。
4.5 通用函数
一元函数
函数 | 描述 | 调用方式 |
---|
abs,fabs | 计算整形、浮点型、复数的绝对值,对于非复数,可以使用更快的fabs | np.abs(arr) |
sqrt | 计算每个元素的平方根,相当于arr**0.5,要去元素是非负数 | np.sqrt(arr) |
square | 计算每个元素的平方,arr**2 | np.square(arr) |
exp | 计算每个元素指数e的x方,如果元素为2,就是e的2次方。 | np.exp(arr) |
log、log10 log2、log1p | 分别计算自然对数、底数为10的对数、底为2的对数、以及log(1+x),要求arr中每个元素为正数 | np.log(arr) np.log10(arr) np.log2(arr) np.log1p(arr) |
sign | 计算各个元素的正负号,1正数、0零、-1复数 | np.sign(arr) |
ceil | 计算各个元素,取得大于等于该数的最小整数 | np.ceil(arr) |
floor | 计算各个元素的floor值,取得小于等于该数最大整数 | np.floor(arr) |
rint | 将各个元素值四舍五入到最接近的整数,保留dtype类型 | np.rint(arr) |
modf | 将元素中小数位和整数位分开返回 | np.modf(arr) |
isnan | 返回哪些值是NaN的布尔类型数组 | np.isnan(arr) |
isfinite | 返回哪些是有穷的布尔类型数组 | np.isfinite(arr) |
isinf | 返回哪些是无穷的(非inf,非NaN)布尔类型数组 | np.isinf(arr) |
cos、cosh、sin、sinh、 tan、tanh | 普通以及双曲型三角函数 | |
arccos、arccosh、arcsin、arcsinh、arctan、arctinh | 反三角函数 | np.arccos(arr) |
二元函数
mod | 元素级的去模 | np.mod(arr1,arr2) |
---|
dot | 两个数组的点积 | np.dot(arr1,arr2) |
greater、 greater_equal、 less、 less_equal、 equal、 not_equal | 执行元素级别的比较运算,最终返回一个布尔型数组 | |
logical_and、 logical_or、 logical_xor | 执行元素级别的布尔逻辑运算,相当于&、|、^ | |
power | 数组中每个元素进行指数值,后面这个例子是对数组中每个元素进行求3次方,类似于arr**3 | np.power(arr,3) |
4.6 聚合函数
(1) 常用聚合函数
函数 | 描述 | 调用方式 |
---|
mean | 平均值 | |
sum | 计算合计值 | |
max | 计算最大值 | |
std | 计算标准差 | |
percentile | 计算百分数 | numpy.percentile(a, q, axis) |
median | 计算中值 | |
(2) axis参数
axis参数一般用在聚合函数中,用于指定在哪个维度上进行聚合。
(3) 例子
需求:一个四维的数组,以后两维度为单位,计算它们的和,比如一个1*2*3*4的数组,则以后面3*4维度为单位,输出1*2的sum
4.7 np.where函数
where函数有三个参数:第一个是判断条件,第二个是如果条件为true时返回的值,第三个是当条件为false时返回的值。
举例
4.8 np.unique函数
unique函数的作用是对数据去重。
举例:
4.9 其他函数
header 函数名 | 描述 |
---|
np.insert (array,index,val ) | 在指定的索引位置插入指定的值 |
np.c_ | 插入一列 |
np.r_ | 插入一行 |