目录
[四、NumPy核心对象 ndarray](#四、NumPy核心对象 ndarray)
[十、数组变形 reshape](#十、数组变形 reshape)
一、前言
在Python数据科学生态中,有一个库几乎无处不在:
import numpy as np
无论是:
机器学习
深度学习
数据分析
计算机视觉
科学计算
都会看到它的身影。
很多框架实际上都是建立在 NumPy 的思想之上:
Scikit-Learn
↓
NumPy
Pandas
↓
NumPy
TensorFlow
↓
NumPy
PyTorch
↓
NumPy
甚至有人说:
学会 NumPy,等于掌握了 Python 数据科学的一半基础。
本文将从零开始,详细讲解 NumPy 的核心概念、常用方法以及开发中的实用技巧。
二、什么是NumPy
NumPy 全称:
Numerical Python
即:
Python数值计算库
官方网址:
https://numpy.org
安装:
pip install numpy
导入:
import numpy as np
三、为什么需要NumPy
普通Python列表:
nums = [1,2,3,4,5]
虽然能存储数据。
但是:
计算慢
占用内存大
不支持矩阵运算
例如:
a = [1,2,3]
a * 2
输出:
[1,2,3,1,2,3]
并不会进行数学运算。
而NumPy:
python
arr = np.array([1,2,3])
print(arr * 2)
输出:
[2 4 6]
这就是NumPy的优势。
四、NumPy核心对象 ndarray
NumPy最重要的数据结构:
ndarray
即:
N维数组
创建数组:
python
import numpy as np
arr = np.array([1,2,3])
print(arr)
输出:
[1 2 3]
查看类型:
print(type(arr))
输出:
numpy.ndarray
五、一维数组
创建:
python
arr = np.array([10,20,30,40])
print(arr)
结果:
[10 20 30 40]
获取元素:
print(arr[0])
输出:
10
六、二维数组(矩阵)
创建矩阵:
python
matrix = np.array([
[1,2,3],
[4,5,6]
])
print(matrix)
输出:
[[1 2 3]
[4 5 6]]
获取元素:
print(matrix[0][1])
结果:
2
推荐写法:
print(matrix[0,1])
七、查看数组属性
python
arr = np.array([
[1,2,3],
[4,5,6]
])
查看维度:
print(arr.ndim)
输出:
2
查看形状:
print(arr.shape)
输出:
(2,3)
查看元素总数:
print(arr.size)
输出:
6
查看数据类型:
print(arr.dtype)
输出:
int64
八、快速创建数组
zeros
创建全0数组:
np.zeros((3,4))
结果:
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
ones
创建全1数组:
np.ones((2,3))
full
指定值填充:
np.full((3,3),100)
输出:
[[100 100 100]
[100 100 100]
[100 100 100]]
eye
创建单位矩阵:
np.eye(4)
输出:
[[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]]
九、生成连续数字
arange
类似range:
np.arange(0,10)
输出:
[0 1 2 3 4 5 6 7 8 9]
指定步长:
np.arange(0,20,2)
输出:
[0 2 4 6 8 10 12 14 16 18]
linspace
生成等间距数据:
np.linspace(0,1,5)
输出:
[0. 0.25 0.5 0.75 1. ]
机器学习中非常常见。
十、数组变形 reshape
创建:
arr = np.arange(12)
结果:
[0 1 2 3 4 5 6 7 8 9 10 11]
变成:
arr.reshape(3,4)
结果:
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
自动计算:
arr.reshape(2,-1)
输出:
[[0 1 2 3 4 5]
[6 7 8 9 10 11]]
开发中经常使用。
十一、数组切片
arr = np.arange(10)
取前三个:
arr[:3]
结果:
[0 1 2]
取后三个:
arr[-3:]
结果:
[7 8 9]
二维切片:
matrix[:,1]
表示:
所有行
第2列
十二、数组运算
加法:
python
a = np.array([1,2,3])
b = np.array([4,5,6])
print(a+b)
输出:
[5 7 9]
减法:
a-b
乘法:
a*b
结果:
[4 10 18]
注意:
这是对应元素相乘
十三、矩阵乘法
机器学习最常见操作:
python
A = np.array([
[1,2],
[3,4]
])
B = np.array([
[5,6],
[7,8]
])
print(A @ B)
输出:
[[19 22]
[43 50]]
也可以:
np.matmul(A,B)
十四、统计方法
最大值:
arr.max()
最小值:
arr.min()
平均值:
arr.mean()
求和:
arr.sum()
标准差:
arr.std()
方差:
arr.var()
这些方法在数据分析中极其常用。
十五、随机数模块
生成随机数:
python
np.random.rand()
生成数组:
python
np.random.rand(3,4)
随机整数:
python
np.random.randint(
0,
100,
size=(3,3)
)
输出:
[[12 45 78]
[34 67 89]
[11 22 99]]
固定随机种子:
np.random.seed(42)
保证实验结果一致。
十六、布尔索引
创建:
python
arr = np.array([
10,
20,
30,
40,
50
])
筛选:
arr[arr > 30]
结果:
[40 50]
这在数据清洗中极其重要。
十七、广播机制(Broadcasting)
NumPy最强大的功能之一。
python
arr = np.array([
[1,2,3],
[4,5,6]
])
print(arr + 10)
输出:
[[11 12 13]
[14 15 16]]
无需循环。
自动扩展计算。
十八、常用机器学习技巧
数据归一化
python
data = np.array([
10,
20,
30,
40
])
normalized = (
data - data.min()
) / (
data.max() - data.min()
)
标准化
python
standardized = (
data - data.mean()
) / data.std()
求协方差矩阵
np.cov(data)
PCA经常使用。
十九、线性代数模块
求逆矩阵:
np.linalg.inv(A)
求特征值:
np.linalg.eig(A)
求行列式:
np.linalg.det(A)
求矩阵秩:
np.linalg.matrix_rank(A)
这些都是机器学习算法的重要基础。
二十、NumPy学习路线

二十一、总结
NumPy是Python数据科学生态的核心基础库。
掌握NumPy意味着掌握:
数组操作
矩阵运算
统计分析
随机数生成
线性代数
机器学习中的:
线性回归
逻辑回归
PCA
K-Means
神经网络
本质上都离不开NumPy。
对于数据科学工程师来说:
NumPy
不是一个普通工具库
而是整个机器学习世界的基础设施
学好NumPy,后续学习 Pandas、Scikit-Learn、PyTorch、TensorFlow 都会轻松很多。