2025 AI 打卡 Day3:我用一晚上把 NumPy 彻底啃透了(附超详细笔记+代码)

部署运行你感兴趣的模型镜像

从入门到真正能用在项目中,90% 人看完这篇就够了


大家好,我是正在狂奔 2025 的打工人,今天是连续打卡的第 3 天!

前两天搞定了 Python 基础和 Pandas,今天轮到科学计算的灵魂——NumPy
很多人说“NumPy 很简单”,但真正用起来才发现:不搞懂这几个核心点,后面 Pandas、PyTorch、机器学习全都会踩坑!

所以我花了一整晚,把官方快速入门教程(https://numpy.com.cn/doc/stable/user/quickstart.html)嚼了三遍,提炼出了这篇“看完就能上手的极精华笔记”。

建议收藏 + 一键三连,今晚跑完所有代码,你也会说:“原来 NumPy 这么香!”

一、为什么非学 NumPy 不可?

  • Pandas 底层就是 NumPy
  • PyTorch/TensorFlow 的 tensor 几乎和 ndarray 一模一样
  • 数据预处理、图像处理、金融量化……全部离不开它
  • 比 Python 原生 list 快 10~100 倍(矢量化)

一句话:不会 Num Py = 科学计算界的文盲

二、核心知识点(90% 场景只用这几招)

1. 创建数组的 8 种姿势(前 5 种必背)

import numpy as np

# 1. 最常用
a = np.array([1, 2, 3, 4, 5])

# 2. 二维、三维
b = np.array([[1,2,3], [4,5,6]])

# 3. 全 0 / 全 1
c = np.zeros((3, 4))
d = np.ones((2, 3, 4), dtype=np.int16)

# 4. 填充任意值
e = np.full((3, 3), 666)

# 5. 等差数列(神器!)
f = np.arange(0, 20, 2) # [0, 2, 4, ..., 18]
g = np.linspace(0, 1, 5) # [0. 0.25 0.5 0.75 1. ] 包含端点

# 6. 随机数(面试、项目天天用)
h = np.random.random((3, 3)) # [0, 1) 均匀分布
i = np.random.randn(3, 3) # 标准正态分布(最常用!)
j = np.random.randint(0, 10, (3, 3)) # 随机整数

2. 重要属性(debug 必看)

arr = np.random.randn(4, 5)

arr.shape # (4, 5)
arr.ndim # 2
arr.dtype # float64
arr.size # 20
arr.itemsize # 每个元素占几个字节

在这里插入图片描述
如果数组太大无法完全打印,NumPy 会自动跳过数组的中心部分,只打印边缘部分。

print(np.arange(10000))	
print(np.arange(10000).reshape(100, 100))

在这里插入图片描述

3. 索引 & 切片(比 list 还好用)

a = np.array([[1,2,3,4],
 [5,6,7,8],
 [9,10,11,12]])

a[0, 1] # 2
a[:, 1] # 第1列 → [ 2 6 10]
a[0:2, 1:3] # 子矩阵
a[a > 7] # 布尔索引 → [ 8 9 10 11 12]
a[[0, 2]] # 花式索引,取第0、2行

打印:
在这里插入图片描述
好嘞,直接给你最新一段,复制到你博客里,替换原来的“4. 形状操作”以及它后面的部分,或者直接插到形状操作之后,作为新的第 4 点(原第 4 点往后顺延即可)。

4. 数组的加减乘除(极重要!矢量化的灵魂)

NumPy 数组之间直接写 + - * /,逐元素运算,不需要任何循环,比 for 快几十到上百倍!

a = np.array([1, 2, 3, 4])
b = np.array([10, 20, 30, 40])

print(a + b)    # [11 22 33 44]
print(a - b)    # [-9 -18 -27 -36]
print(a * b)    # [ 10  40  90 160]   ← 逐元素相乘!不是矩阵乘法
print(a / b)    # [0.1  0.1  0.1  0.1]
print(a ** 2)   # [ 1  4  9 16]       ← 幂运算
print(a < 3)    # [ True  True False False]  ← 布尔数组,神技!

在这里插入图片描述

和标量运算(广播机制自动生效):

print(a + 100)   # [101 102 103 104]
print(a * 5)     # [ 5 10 15 20]
print(a <= 2)    # [ True  True False False]

真正的矩阵乘法(点积)用下面两种写法(推荐第二种):

A = np.array([[1, 2], [3, 4]])    # (2, 2)
B = np.array([[5, 6], [7, 8]])    # (2, 2)

np.dot(A, B)      # 老写法
A @ B             # Python 3.5+ 新写法(强烈推荐!)
# 结果:
# [[19 22]
#  [43 50]]

实际项目中 99% 都会用到这几行:

# 特征缩放(非常常见)
X = np.random.randn(1000, 20)
X = X * 0.1 + 5          # 先乘后加,相当于缩放+平移

# ReLU 激活函数(深度学习里天天写)
X_relu = np.maximum(0, X)   # 小于0的全部变成0

# L2 范数归一化(让每一行向量长度为1)
X_norm = X / np.sqrt(np.sum(X**2, axis=1, keepdims=True))

记住一句话:看到 for 循环对数组逐元素加减乘除,马上改成 NumPy 直接运算,性能直接起飞!
看完真的能“秒杀”90% 的数据处理任务!

5. 形状操作(每天都要用)

a = np.arange(12)
b = a.reshape(3, 4) # 重塑
c = b.ravel() # 展平
d = b.T # 转置
e = np.newaxis # 增加维度神器
# 例子:(100,) → (100, 1)
x = x[:, np.newaxis]

6. 广播(Broadcasting)—— NumPy 最神奇的特性

A = np.array([[1, 2, 3],
 [4, 5, 6]]) # (2, 3)

b = np.array([10, 20, 30]) # (3,)

A + b
# 自动广播成:
# [[11, 22, 33],
# [14, 25, 36]]

在这里插入图片描述

实际项目中最常见的用法(数据标准化):

# 让每一列均值为0,方差为1(机器学习必备预处理)
X = np.random.randn(1000, 10)
X_centered = X - X.mean(axis=0) # 去均值
X_scaled = X_centered / X.std(axis=0) # 除以标准差

7. 聚合操作(记住 axis 就赢了)

X.sum(axis=0) # 按列求和
X.mean(axis=1) # 按行求均值
X.max(), X.argmax()

8. 线性代数(小项目直接够用)

A = np.array([[1, 2], [3, 4]])
b = np.array([5, 6])

x = np.linalg.solve(A, b) # 解方程 Ax = b
np.linalg.inv(A) # 求逆
np.dot(A, b) 或 A @ b # 矩阵乘法

三 、今天写的 3 个小练习(直接复制跑)

# 练习1:生成 10000 个正态分布数据,计算均值和标准差
data = np.random.randn(10000)
print(f"均值: {data.mean():.6f}, 标准差: {data.std():.6f}")

# 练习2:实现 min-max 归一化函数
def min_max_scale(x):
 return (x - x.min()) / (x.max() - x.min())

# 练习3:不用循环,把矩阵每行加上不同的偏置
matrix = np.arange(20).reshape(4, 5)
bias = np.array([10, 20, 30, 40]) # (4,)
result = matrix + bias[:, np.newaxis] # 广播神技!
print(result)

四、Day3 总结

  • NumPy 核心 = ndarray + 矢量化 + 广播
  • 背会前 10 个函数,你就超过了 80% 的初学者
  • 以后看到 for 循环操作列表 → 立刻改 NumPy,性能起飞

明天预告:Matplotlib 可视化 + 手把手画出让人惊艳的图表!

坚持打卡第 3 天,感觉自己已经起飞了
你们也一起冲,2025 我们都要卷成 AI 大佬!

点赞 + 收藏 + 在看,三连才是真的爱
我们明天见!

加油,兄弟!明天继续卷!!

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

在运行 BasicVSR++ 代码时遇到 `numpy.core.multiarray` 导入错误,通常是由于 NumPy 版本不兼容或与其他依赖库存在冲突所致。以下是些可能的解决方案: ### 1. 检查 NumPy 的版本 确保当前安装的 NumPy 版本与 BasicVSR++ 的要求兼容。某些深度学习框架(如 TensorFlow 或 PyTorch)对 NumPy 的版本有特定限制。可以通过以下命令查看当前版本: ```bash pip show numpy ``` 如果版本与框架要求不匹配,可以通过以下命令安装特定版本: ```bash pip install numpy==1.16.0 ``` 推荐版本 1.16.0,因为它与许多深度学习框架兼容,包括 TensorFlow 1.14.0 [^3]。 ### 2. 重新安装 NumPy 和相关依赖库 有时,即使重新安装 NumPy,也可能因为缓存或残留文件导致问题。可以尝试使用以下命令彻底卸载并重新安装 NumPy: ```bash pip uninstall numpy pip install numpy ``` 如果问题仍然存在,建议创建个新的虚拟环境,并仅安装必要的依赖库。例如: ```bash conda create -n basicvsr_plusplus python=3.7 conda activate basicvsr_plusplus pip install torch torchvision ``` 这样可以避免不同库之间的版本冲突 [^4]。 ### 3. 检查 Python 环境和依赖库的兼容性 确保 Python 版本与 BasicVSR++ 的要求致。某些深度学习框架仅支持特定版本的 Python。例如,TensorFlow 1.x 通常推荐使用 Python 3.6 或 3.7 [^3]。 此外,检查其他依赖库是否与 NumPy 兼容。可以通过以下命令列出所有已安装的包: ```bash pip list ``` 如果发现某些库与 NumPy 存在版本冲突,可以尝试更新或降级这些库。 ### 4. 使用虚拟环境隔离依赖 为了避免不同项目之间的依赖冲突,建议使用虚拟环境管理依赖。例如,使用 `conda` 或 `virtualenv` 创建个独立的环境,并在其中安装 BasicVSR++ 所需的所有依赖库 [^4]。 ### 5. 检查 BasicVSR++ 的官方文档和社区支持 如果上述方法均未解决问题,可以查阅 BasicVSR++ 的官方文档或社区支持,寻找特定于该框架的解决方案。社区中可能已有类似问题的讨论和解决方案。 ### 6. 示例代码 以下是个简单的代码示例,用于测试 NumPy 是否能够正确导入: ```python import numpy as np # 测试 NumPy 功能 arr = np.array([1, 2, 3]) print(arr) ``` 如果运行时仍然报错,则说明问题可能与 NumPy 的安装或环境配置有关。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

wáng bēn

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值