【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案例巩固强化
  • 56
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 92
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 92
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向阳花花花花

感谢大佬支持,本人会继续努力哒

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值