知识目录
- 前言
- 一、聚合函数
- 二、矩阵操作
- 2.1 算术运算
- 2.2 线性代数
- 2.3 其他数学操作
- 三、广播机制
- 3.1 广播的原则
- 3.2 案例
- 四、排序
- 五、文件操作
- 结语
- 相关导读
前言
大家好!本期给大家带来的是【数据分析 - 基础入门之NumPy⑤】NumPy基本操作 - 二,收录于作者的【 Python 数据分析】专栏,正在火热🔥更新中……
每日金句分享:背上背包,带上行囊,去你的世界旅行。』—— 「柯」。
下面让我们进入正题吧。
一、聚合函数
NumPy 中提供了许多内置函数,用于快速达成一些功能。
函数 | 功能 |
---|---|
np.sum() | 求和 |
np.mean() | 平均值 |
np.average() | 平均值 |
np.min() | 最小值 |
np.max() | 最大值 |
np.std() | 标准差 |
np.var() | 方差 |
np.median() | 中位数 |
np.power() | 幂运算 |
np.sqrt() | 开方 |
np.argmin() | 最小值的下标 |
np.argmax() | 最大值的下标 |
np.log() | 对数 |
np.exp() | 指数 |
np.argwhere | 按条件查找 |
下面是一些使用示例:
n1 = np.array([
[1,3,4],
[3,2,9],
[7,1,0]
])
print(np.sum(n1)) # 求和
print(np.min(n1)) # 最小值
print(np.max(n1)) # 最大值
print(np.mean(n1)) # 平均值
print(np.average(n1)) # 平均值
print(np.median(n1)) # 中位数
print(np.argmin(n1)) # 最小值对应下标
print(np.argmax(n1)) # 最大值对应下标
print(np.std(n1)) # 标准差
print(np.var(n1)) # 方差
print(np.power(n1,2)) # 幂运算
print(np.argwhere(n1 > 2)) # 按条件查找并返回位置
二、矩阵操作
2.1 算术运算
算术运算指的是和标量之间的运算,ndarray 数组可以直接和标量进行各种算术运算,例如:+、-、*、/、%、//(整除)、**(次方)。
# 矩阵算术运算
n1 = np.random.randint(0,10,(2,3))
print(n1)
n2 = np.random.randint(0,10,(2,3))
print(n2)
n1 * n2
2.2 线性代数
线性代数中矩阵的操作主要包括:矩阵乘法、求逆矩阵、求矩阵的行列式、求矩阵的秩等。
函数 | 功能 |
---|---|
np.dot() | 矩阵乘法 |
np.linalg.inv() | 求逆矩阵 |
np.linalg.det() | 求矩阵的行列式 |
np.linalg.matrix_rank() | 求矩阵的秩 |
下面是具体示例:
# 线性代数
n1 = np.random.randint(0,10,(2,3))
print(n1)
n2 = np.random.randint(0,10,(3,2))
print(n2)
print(np.dot(n1,n2)) #
n3 = np.random.randint(0,10,(2,2))
print(np.linalg.inv(n3)) # 求逆:Last 2 dimensions of the array must be square,数组的最后 2 个维度必须是正方形的
print(np.linalg.det(n3))
print(np.linalg.matrix_rank(n3))
2.3 其他数学操作
NumPy 中还有一些其他数学操作,具体可以参考:NumPy中文网。
三、广播机制
如果两个数组 a 和 b 形状相同,即满足 a.shape == b.shape ,那么算术运算可以对应元素进行;如果形状不同,NumPy会自动匹配广播机制,广播 (Broadcast) 是 numpy 对不同形状 (shape) 的数组进行数值计算的方式。
当运算中的 2 个数组的形状不同时,numpy 将自动触发广播机制。
3.1 广播的原则
- <1> 如果两个数组的最后一个维度(trailing dimension,即
从末尾开始算起的维度)的维数相同
,(在二维数组中表现为列数相同)。 - <2> 两个数组行数相同,其中一方列维度为1,则认为它们是广播兼容的。广播会在缺失和(或)长度为1的维度上进行。
pandas 没有广播机制。
3.2 案例
# (1) 最后维度维数相同
n1 = np.array([
[1,4,3],
[9,1,5]
])
n2 = [
[3,6,1]
]
print(n1 + n2)
# (2) 其中一个维度为1
n3 = np.array([
[1],
[3]
])
n1 + n3
四、排序
对数组的排序是同一个方法,两种方式:如果使用 np.sort() ,不改变原数组;如果使用 n.sort() ,n 是一个数组,会改变原数组。
print(n1)
# 不改变原数组
np.sort(n1)
# 改变原数组
n1.sort()
print(n1)
五、文件操作
对文件的操作主要有保存文件和加载文件,下面分别介绍。
函数 | 功能 |
---|---|
np.save() | 保存 ndarray 到一个 npy 文件 |
np.savez() | 保存 ndarray 到一个 npz 文件 |
np.savetxt() | 保存 ndarray 到一个 txt/csv 文件 |
np.load() | 读取 npy、npz 文件 |
np.loadtxt() | 读取 txt、csv 文件 |
结语
本篇文章主要介绍了 NumPy 的基本操作,最重要的是要理解 NumPy 中的广播机制以及常用函数。
🍻 我是向阳花花花花,在学习的路上一直前行,期待与你一起进步。~ 🍻
🔥 如果文中有些地方不清楚的话,欢迎联系我,我会给大家提供思路及解答。🔥
相关导读
文章直达 | 链接 |
---|---|
上期回顾 | 【数据分析 - 基础入门之NumPy④】- NumPy基本操作 - 一 |
下期预告 | 【数据分析 - 基础入门之NumPy⑥】- NumPy案例巩固强化 |