惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
The Blog of Author Tim Ferriss
S
Securelist
D
Docker
The Register - Security
The Register - Security
GbyAI
GbyAI
Recorded Future
Recorded Future
Engineering at Meta
Engineering at Meta
Stack Overflow Blog
Stack Overflow Blog
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
罗磊的独立博客
博客园 - 【当耐特】
F
Full Disclosure
WordPress大学
WordPress大学
腾讯CDC
小众软件
小众软件
大猫的无限游戏
大猫的无限游戏
D
DataBreaches.Net
SecWiki News
SecWiki News
L
Lohrmann on Cybersecurity
I
InfoQ
MyScale Blog
MyScale Blog
量子位
Cyberwarzone
Cyberwarzone
博客园 - 三生石上(FineUI控件)
The Hacker News
The Hacker News
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
博客园_首页
H
Help Net Security
K
Kaspersky official blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Webroot Blog
Webroot Blog
Blog — PlanetScale
Blog — PlanetScale
V
Vulnerabilities – Threatpost
Y
Y Combinator Blog
The Cloudflare Blog
P
Proofpoint News Feed
V
Visual Studio Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tailwind CSS Blog
爱范儿
爱范儿
P
Privacy International News Feed
Security Archives - TechRepublic
Security Archives - TechRepublic
The GitHub Blog
The GitHub Blog
C
Cybersecurity and Infrastructure Security Agency CISA
B
Blog RSS Feed

小陈同学 - 后端

从 requirements.txt 到 pyproject.toml:现代 Python 项目升级实战指南(含依赖分析与 Docker) 用 NumPy 玩转电影评分系统:从随机数据到洞察分析 NumPy 进阶:搞懂广播机制,才能真正玩转数组 uv:用 Rust 武装的极速 Python 包管理器入门指南 NodeJs连接MongoDB以及操作方法 NodeJs基于Token的身份认证
NumPy 入门:别再用 for 循环折磨自己了
Caleb · 2025-10-24 · via 小陈同学 - 后端

用 NumPy 的向量化数组运算取代低效 for 循环,实现简洁高效的科学计算。

numpy_1.png

一、为什么我们需要 NumPy?

还记得第一次在 Python 里写一堆 for 循环的时候的感受吗?
一行行循环、一层层嵌套,看起来像炼丹。

# 把列表每个元素平方
data = [1, 2, 3, 4, 5]
result = []
for x in data:
    result.append(x ** 2)
print(result)

结果当然是 [1, 4, 9, 16, 25]
但执行速度慢得让人想弃疗。

这时候登场的主角就是 NumPy(Numerical Python)
一个让你在 Python 里写出媲美 C 语言性能的科学计算库。

二、NumPy 的安装与导入

直接用 pip 安装就行:

pip install numpy

安装好后,你一般都会用一个简称:

import numpy as np

如果你看到别人写 np.array(),别慌,这只是大家约定俗成的简写。

三、创建数组的几种方式

NumPy 的核心是 ndarray(N 维数组)。
它像 Python 的列表,但更高效、更方便。

🧩 1. 从列表创建

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
print(arr)

输出:

[1 2 3 4 5]

注意到没?打印的时候没有逗号——这就是 NumPy 的“数组风格”。

🧮 2. 创建特殊数组

np.zeros((2, 3))   # 2x3 的全零矩阵
np.ones((3, 3))    # 全一矩阵
np.eye(3)          # 单位矩阵
np.arange(0, 10, 2) # 等差数组 [0, 2, 4, 6, 8]
np.linspace(0, 1, 5) # 等分数组 [0., 0.25, 0.5, 0.75, 1.]

这些函数会在之后的项目里频繁使用。

四、数组运算的魔法

还在写循环?别傻了。
NumPy 可以直接对数组进行“广播式运算”:

data = [1, 2, 3, 4, 5]
result = []
for x in data:
    result.append(x * 2)
print(result)

输出:

[2, 4, 6, 8, 10]
import numpy as np

arr = np.array([1, 2, 3, 4, 5])
print(arr * 2)

输出:

[2, 4, 6, 8, 10]

是不是神清气爽?
向量化运算让你不写循环也能搞定所有数学操作。

五、索引与切片

NumPy 的索引比 Python list 强大得多:

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

print(arr[0, 1])   # 访问第1行第2列 -> 2
print(arr[:, 1])   # 所有行的第2列 -> [2 5]
print(arr[1, :])   # 第2行 -> [4 5 6]

还可以用布尔索引:

arr[arr > 3]

六、常用数学函数

NumPy 内置了几乎所有数学函数:

np.mean(arr)     # 平均值
np.sum(arr)      # 求和
np.max(arr)      # 最大值
np.min(arr)      # 最小值
np.std(arr)      # 标准差

七、数组形状与维度

arr = np.array([[1,2,3], [4,5,6]])
arr.shape   # (2, 3)
arr.ndim    # 维度数 -> 2
arr.size    # 元素总数 -> 6

改变形状也很方便:

arr.reshape(3, 2)
⚠️ 注意:reshape 不会修改原数组,而是返回一个新数组。

八、小结

知识点说明
np.array()创建数组
np.zeros()/np.ones()创建特殊矩阵
arr.shape/arr.ndim查看形状与维度
arr * 2/arr + arr向量化运算
arr[arr > 3]布尔筛选

下一篇我们将深入 NumPy 的“隐藏魔法”——广播机制、内存布局与性能优化。
别眨眼,数组还能比你想的更聪明。

🏁 系列目录

  1. NumPy 入门:别再用 for 循环折磨自己了
  2. NumPy 进阶:搞懂广播机制,才能真正玩转数组
  3. 🔜 NumPy 实战:用数组玩转图像与数据分析

作者: 文章链接: https://reinness.com/posts/293 版权声明:  本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自小陈同学