目录

前言

目录

1. NumPy 简介与安装

1.1 为什么用 NumPy?

1.2 安装(一行命令)

1.3 导入(固定写法)

2. Ndarray 数组对象(NumPy 核心)

3. 创建数组的 10 种常用方法

3.1 从列表创建(最常用)

3.2 全 0 数组

3.3 全 1 数组

3.4 全为指定值

3.5 单位矩阵(对角线为1)

3.6 等差数列

3.7 均分区间(指定个数)

3.8 随机数组(0~1)

3.9 正态分布随机数

3.10 随机整数

4. 数组属性(必掌握)

5. 索引与切片(取值/修改)

5.1 1 维数组

5.2 2 维数组(矩阵)

5.3 布尔索引(筛选)

6. 数组运算(向量化运算)

6.1 基础运算

6.2 广播机制(不同形状也能运算)

7. 通用函数(ufunc)

8. 统计函数

9. 数组形状操作

9.1 重塑(reshape)

9.2 展平(转为1维)

9.3 转置(行列互换)

9.4 拼接

9.5 拆分

10. 随机数生成(常用)

11. 线性代数(机器学习必备)

11.1 矩阵乘法

11.2 矩阵的逆

11.3 行列式

11.4 特征值与特征向量

11.5 解线性方程组

12. 实战案例

案例 1:数据归一化(标准化)

案例 2:简单线性回归(最小二乘法)

13. 常见错误与注意事项

总结(最核心 5 点)


前言

NumPy(Numerical Python)是 Python 科学计算、数据分析、机器学习、深度学习的核心基础库,专门用于高效处理多维数组(矩阵)运算,比 Python 原生列表快 10~100 倍,是数据科学必备工具。

1. NumPy 简介与安装

1.1 为什么用 NumPy?

  • 高效处理大量数值数据

  • 支持多维数组/矩阵

  • 提供大量数学函数(无需循环)

  • 是 Pandas、Matplotlib、Scikit-learn、TensorFlow 等库的基础

1.2 安装(一行命令)

打开命令提示符/终端运行:


pip install numpy

1.3 导入(固定写法)


import numpy as np # 行业通用简写,必须记住


2. Ndarray 数组对象(NumPy 核心)

ndarray = N-dimensional array(N 维数组),是 NumPy 最核心的数据结构。

特点:

  • 所有元素类型必须相同

  • 支持快速运算

  • 维度:0维(标量)、1维(向量)、2维(矩阵)、3维/高维(张量)


3. 创建数组的 10 种常用方法

3.1 从列表创建(最常用)

# 1维数组
arr1 = np.array([1, 2, 3, 4])

# 2维数组(矩阵)
arr2 = np.array([[1,2], [3,4], [5,6]])

print(arr1)
print(arr2)

3.2 全 0 数组


np.zeros((3, 4)) # 3行4列

3.3 全 1 数组


np.ones((2, 3))

3.4 全为指定值


np.full((2, 2), 10) # 全部填充10

3.5 单位矩阵(对角线为1)


np.eye(3) # 3x3

3.6 等差数列


np.arange(0, 10, 2) # 起始、结束(不含)、步长 → [0 2 4 6 8]

3.7 均分区间(指定个数)


np.linspace(0, 10, 5) # 0~10均分5个点

3.8 随机数组(0~1)


np.random.rand(2, 3)

3.9 正态分布随机数


np.random.randn(3, 3)

3.10 随机整数


np.random.randint(0, 10, size=(2, 3)) # 0~9之间


4. 数组属性(必掌握)


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) # 数据类型 → int32/int64 print(arr.itemsize)# 每个元素字节数

修改数据类型:


arr.astype(float)


5. 索引与切片(取值/修改)

5.1 1 维数组


arr = np.array([10,20,30,40]) print(arr[0]) # 10 print(arr[1:3]) # [20 30] print(arr[:]) # 全部

5.2 2 维数组(矩阵)

语法:arr[行, 列]


arr = np.array([[1,2,3], [4,5,6], [7,8,9]]) print(arr[0, 1]) # 第0行第1列 → 2 print(arr[1, :]) # 第1行全部 → [4 5 6] print(arr[:, 2]) # 第2列全部 → [3 6 9] print(arr[0:2, 1:3])# 子矩阵

5.3 布尔索引(筛选)


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


6. 数组运算(向量化运算)

不需要写循环!自动批量计算

6.1 基础运算


a = np.array([1,2,3]) b = np.array([4,5,6]) print(a + b) # [5 7 9] print(a - b) print(a * b) # 对应相乘 print(a / b) print(a ** 2) # 平方 print(np.sqrt(a)) # 开方

6.2 广播机制(不同形状也能运算)


arr = np.array([[1,2,3], [4,5,6]]) print(arr + 10) # 所有元素+10


7. 通用函数(ufunc)


arr = np.array([1,2,3,4]) np.exp(arr) # 指数 np.log(arr) # 自然对数 np.sin(arr) # 正弦 np.cos(arr) # 余弦 np.round(arr) # 四舍五入


8. 统计函数

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

print(arr.sum())    # 总和
print(arr.mean())   # 均值
print(arr.max())    # 最大值
print(arr.min())    # 最小值
print(arr.std())    # 标准差
print(arr.var())    # 方差
print(np.median(arr)) # 中位数
print(np.argmax(arr))# 最大值索引
print(np.argmin(arr))# 最小值索引

按行/按列计算:


arr.sum(axis=0) # 按列求和 arr.sum(axis=1) # 按行求和


9. 数组形状操作

9.1 重塑(reshape)


arr = np.arange(12) arr.reshape(3,4) # 必须元素数量匹配

9.2 展平(转为1维)


arr.flatten()

9.3 转置(行列互换)


arr.T

9.4 拼接


a = np.array([[1,2]]) b = np.array([[3,4]]) np.hstack((a,b)) # 横向拼接 np.vstack((a,b)) # 纵向拼接

9.5 拆分


arr = np.arange(6).reshape(2,3) np.vsplit(arr, 2) # 垂直拆分 np.hsplit(arr, 3) # 水平拆分


10. 随机数生成(常用)


np.random.seed(10) # 固定随机种子(结果可复现) np.random.rand(2,3) # 0~1均匀分布 np.random.randn(2,3) # 标准正态分布 np.random.randint(0,10,5) # 整数随机数 np.random.choice([1,2,3], size=3) # 随机选择 np.random.permutation(10) # 打乱


11. 线性代数(机器学习必备)

11.1 矩阵乘法


a = np.array([[1,2], [3,4]]) b = np.array([[5,6], [7,8]]) np.dot(a, b) # 矩阵乘法 a @ b # 简写(推荐)

11.2 矩阵的逆


np.linalg.inv(a)

11.3 行列式


np.linalg.det(a)

11.4 特征值与特征向量


np.linalg.eig(a)

11.5 解线性方程组


# 2x + y = 5 # x + 3y = 10 A = np.array([[2,1],[1,3]]) b = np.array([5,10]) x = np.linalg.solve(A, b) print(x)


12. 实战案例

案例 1:数据归一化(标准化)


data = np.array([10, 20, 30, 40, 50]) # 最小-最大归一化 0~1 norm = (data - data.min()) / (data.max() - data.min()) print(norm)

案例 2:简单线性回归(最小二乘法)

求 y = wx + b


x = np.array([1,2,3,4,5]) y = np.array([2,4,6,8,10]) w = np.sum((x - x.mean()) * (y - y.mean())) / np.sum((x - x.mean())**2) b = y.mean() - w * x.mean() print("w =", w) print("b =", b)


13. 常见错误与注意事项

  1. 列表和数组混用:运算前先转 np.array()

  2. 形状不匹配:reshape 数量必须一致

  3. 数据类型溢出:注意 int / float

  4. 视图与副本:切片是视图,修改会影响原数组 arr_copy = arr.copy() # 真正复制

  5. 除法 0 报错:用 np.where() 处理


总结(最核心 5 点)

  1. import numpy as np

  2. 创建:np.array()np.zeros()np.ones()np.arange()

  3. 属性:shapendimdtype

  4. 运算:向量化运算,不用循环

  5. 统计:sum()mean()max()min()std()

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐