在数据科学、人工智能与科学计算领域中,Numpy(Numerical Python)是Python中最重要的基础库之一。它为Python提供了强大的**多维数组(ndarray)**对象,并支持高效的向量化计算,让数据处理速度提升数十倍。 本篇博客将带你快速入门Numpy,从安装、核心数据结构、常用操作到实战应用,一步步掌握这个数据计算神器。
一、为什么要学习 Numpy
Python的列表虽然灵活,但在大规模数值计算中效率并不理想。 Numpy通过底层C语言实现的高效算法,让我们能够:
- 快速执行矩阵运算和统计分析;
- 实现科学计算和机器学习的数学基础;
- 轻松进行向量化操作,避免低效的循环。
一句话总结:Numpy让Python像Matlab一样强大,但更自由。
二、安装Numpy
在命令行中使用pip即可安装:
bash
pip install numpy
安装完成后,使用以下命令验证:
python
import numpy as np
print(np.__version__)
三、Numpy的核心:ndarray
Numpy的核心数据结构是ndarray,即N维数组对象。 相比Python列表,它有以下优势:
- 占用内存更少;
- 支持矢量化计算;
- 支持广播机制。
示例:
python
import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr) # 输出:[1 2 3 4]
print(arr.dtype) # 数据类型
print(arr.ndim) # 数组维度
print(arr.shape) # 形状
四、创建Numpy数组的常见方法
Numpy提供了多种快速创建数组的方式:
python
# 从列表创建
a = np.array([1, 2, 3])
# 创建全零数组
zeros = np.zeros((2,3))
# 创建全一数组
ones = np.ones((3,3))
# 创建等差数列
arange = np.arange(0, 10, 2)
# 创建随机数组
rand = np.random.rand(2,2)
这些函数能帮助我们快速生成所需数据结构,为后续计算打下基础。
五、Numpy数组的常用操作
1. 数组索引与切片
python
arr = np.array([10, 20, 30, 40, 50])
print(arr[1:4]) # [20 30 40]
2. 数组运算(向量化操作)
python
a = np.array([1,2,3])
b = np.array([4,5,6])
print(a + b) # [5 7 9]
print(a * b) # [4 10 18]
3. 数学函数
python
x = np.array([1, 2, 3])
print(np.sqrt(x))
print(np.exp(x))
print(np.mean(x))
4. 矩阵操作
python
A = np.array([[1,2],[3,4]])
B = np.array([[5,6],[7,8]])
print(np.dot(A,B)) # 矩阵乘法
六、Numpy的广播机制
广播机制让不同形状的数组之间也能运算。例如:
python
a = np.array([[1,2,3],
[4,5,6]])
b = np.array([10,20,30])
print(a + b)
结果:
lua
[[11 22 33]
[14 25 36]]
Numpy会自动扩展b的形状与a匹配,实现高效运算。
七、实战:计算学生成绩平均分
python
import numpy as np
scores = np.array([
[85, 90, 88],
[78, 80, 82],
[90, 95, 92]
])
avg_per_student = np.mean(scores, axis=1)
avg_per_subject = np.mean(scores, axis=0)
print("每个学生平均分:", avg_per_student)
print("每门课平均分:", avg_per_subject)
输出:
css
每个学生平均分: [87.66666667 80. 92.33333333]
每门课平均分: [84.33333333 88.33333333 87.33333333]
八、小结
Numpy是Python科学计算的基石,理解并熟练使用它,能让你的程序执行效率成倍提升。 本篇你已经掌握了:
- Numpy的核心数据结构
ndarray - 数组创建与运算方法
- 广播机制与矩阵操作
- 实战案例:成绩平均分计算
接下来,你可以进一步学习Numpy的高级索引 、线性代数函数 、统计分析等内容,为Pandas与机器学习打下坚实基础。