学习使我幸福
分类
Linux
2
Golang
0
Python
4
标签
OpenSSL
1
Git
1
数据结构
1
Matplotlib
1
Numpy
1
Pandas
1
平台
关于
Python模块 - numpy
Python
Numpy
2025-08-30
236
## 1. numpy简介 numpy是高性能科学计算和数据分析的基础包,它是pandas等工具的基础。 numpy的主要功能: - ndarray,一个多维数组结构,高效且节省空间 - 无需循环对整组数据进行快速运算的数学函数 - 线性代数、随机数生成和傅里叶变换功能 安装方法:`pip install numpy` 导入方式:`import numpy as np` ## 2. ndarray 多维数组对象 创建ndarray:`np.array(array_like)` 数组与列表的区别: - 数组对象内的元素类型必须相同 - 数组大小不可修改(元素总数) ## 3. ndarray 常用属性 - T:数组的转置(对高维数组而言) $$ \begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ \end{pmatrix} \Rightarrow \begin{pmatrix} 1 & 4 \\ 2 & 5 \\ 3 & 6 \\ \end{pmatrix} $$ - size:数组元素的个数 - ndim:数组的维数 - shape:数组的维度大小(形状或结构)元组形式 - dtype:数组元素的数据类型 ## 4. ndarray 数据类型 - 布尔型:bool_ - 整型:int_, int8, int16, int32, int64 - 无符号类型:uint8, uint16, uint32, uint64 - 浮点型:float_, float16, float32, float64 - 复数型:complex_, complex64, complex128 ## 5. ndarray 创建 |方法|说明| |----|----| |array()|将列表转换为数组,可选择显式指定dtype| |arange()|range的numpy版,支持浮点数| |linspace()|类似于arange(),第三个参数为数组的长度| |zeros()|根据指定形状和dtype创建全0数组| |ones()|根据指定形状和dtype创建全1数组| |empty()|根据指定形状和dytpe创建空数组(元素的值为随机值,是内存残留值)| |eye()|根据指定边长和dtype创建单位矩阵| ## 6. ndarray 批量运算 - 数组和标量之间的运算 - a + 1 - a * 3 - 1 // 3 - a ** 0.5 - a > 5 - 同样大小数组之间的运算 - a + b - a / b - a ** b - a % b - a == b ## 7. ndarray 索引 - 一维数组的索引:a[5] - 多维数组的索引: - 列表式写法:a[5][3] - 新式写法:a[5,3] ## 8. ndarray 切片 - 一维数组的切片:a[5:8], a[4:], a[2:10]=1 - 多维数组的切片:a[1:2, 3:4], a[:, 3:5], a[:, 1] - 数组切片与列表切片的不同: 数组切片时不会自动复制,而是创建一个视图,在切片数组上的修改会影响原数组。 copy()方法可以创建数组的深拷贝 ## 9. ndarray 布尔型索引 > 问题1:给一个数组,选出数组中所有大于5的数。 答案:a[a>5] 问题2:给一个数组,选出数组中所有大于5的偶数。 答案:a[(a > 5) & (a % 2 == 0)] 问题3:给一个数组,选出数组中所有大于5的数和偶数 答案:a[(a >5) | (a % 2 == 0)] 原理说明: - 数组与标量的运算:a>5会与a中的每一个元素进行判断,返回一个布尔数组 - 布尔型索引:将同样大小的布尔数组传进索引,会返回一个由所有true对应位置的元素的数组 ## 10. ndarray 花式索引 > 问题1:对于一个数组,选出其第1,3,4,6,7个元素,组成新的二维数组。 答案:a[[1, 3, 4, 6, 7]] 问题2:对一个数组,选出其第一列和第三列,组成新的二维数组 答案:a[:, [1, 3]] ## 11. numpy 通用函数 - 通用函数:能同时对数组中的所有元素进行运算的函数 - 常见通用函数: - 一元函数:**abs**,**sqrt**,exo,log,**ceil**,**floor**,**rint**,**trunc**,**modf**,**isnan**,**isinf**,cos,sin,tan - 二元函数:add,substrat,multiply,divide,power,mod,**maximum**,**mininum** ## 12. 浮点数特殊值 - nan(Not a Number):不等于任何浮点数(nan != nan) - inf(infinity):比任何浮点数都大 - numpy中创建特殊值:np.nan np.inf - 在数据分析中,nan常被用作表示数据缺失值 ## 13. numpy 数学和统计方式 - sum:求和 - mean:求平均值 - std:求标准差 - var:求方差 - min:求最小值 - max:求最大值 - argmin:求最小值索引 - argmax:求最大值索引 ## 14. numpy 随机数生成 随机数函数在np.random子包内: - rand 给定形状产生随机数组(1>rand>0之间的数) - randint 给定形状产生随机整数 - choice 给定形状产生随机选择 - shuffle 与random.shuffle相同 - uniform 给定形状产生随机数组