当前位置: 首页 > news >正文

人工智能之数据分析 numpy:第十三章 工具衔接与迁移

人工智能之数据分析 numpy

第十三章 工具衔接与迁移


前言

NumPy 作为 Python 科学计算的核心库,不仅功能强大,还与众多工具无缝衔接。本文从两个关键方向系统讲解:


一、从 MATLAB 到 NumPy:语法对照与迁移指南

MATLAB 用户迁移到 NumPy 时,最大的挑战是​思维转换​(从矩阵中心到数组中心)和​语法差异​。以下是核心对照表。

✅ 基本原则

  • NumPy 使用 ndarray,不是 matrix → 所有运算默认是逐元素​
  • 矩阵乘法用 @np.dot()​,不是 *
  • 索引从 0 开始​,不是 1
  • 切片不复制数据​(视图机制)

1. 数组创建对照

MATLAB NumPy 说明
a = [1, 2, 3] a = np.array([1, 2, 3]) 行向量
b = [1; 2; 3] b = np.array([[1], [2], [3]])b = np.array([1,2,3]).reshape(-1,1) 列向量
zeros(2,3) np.zeros((2,3)) 注意:元组参数
ones(2,3) np.ones((2,3))
eye(3) np.eye(3) 单位矩阵
linspace(0,1,5) np.linspace(0,1,5) 相同
rand(2,3) np.random.rand(2,3) 均匀分布 [0,1)
A(:) A.flatten()A.ravel() 展平为一维

💡 MATLAB 的 [1,2,3] 是行向量,NumPy 的 np.array([1,2,3]) 是一维数组(无行列之分),但在广播中可视为行或列。


2. 索引与切片

MATLAB NumPy 说明
A(2,3) A[1,2] 索引从 0 开始
A(2,:) A[1,:] 第 2 行
A(:,3) A[:,2] 第 3 列
A(2:end, :) A[1:, :] 从第 2 行到末尾
A([1,3], :) A[[0,2], :] 花式索引(注意:返回副本)
A(A>0.5) A[A>0.5] 布尔索引(相同!)

⚠️ MATLAB 的 end 在 NumPy 中用 -1 表示:

  • A(:, end)A[:, -1]
  • A(2:end-1, :)A[1:-1, :]

3. 运算与函数

操作 MATLAB NumPy
矩阵乘法 A * B A @ Bnp.dot(A, B)
逐元素乘法 A .* B A * B
转置 A.'(非共轭)A'(共轭转置) A.T(总是非共轭)A.conj().T(共轭转置)
求逆 inv(A) np.linalg.inv(A)
解方程 A \ b np.linalg.solve(A, b)
特征值 [V,D] = eig(A) eigvals, eigvecs = np.linalg.eig(A)
FFT fft(x) np.fft.fft(x)
最大值 max(A)(按列) np.max(A, axis=0)
拼接 [A, B](水平)[A; B](垂直) np.hstack([A,B])``np.vstack([A,B])

4. 控制流与脚本结构

  • MATLAB 脚本 → Python 脚本(.py 文件)
  • MATLAB 函数文件 → Python 函数(def func(...):
  • MATLAB 的 clear, clc → ​不需要​(Python 自动管理内存)
% MATLAB
function y = myfunc(x)y = x.^2 + 2*x + 1;
end
# Python
def myfunc(x):return x**2 + 2*x + 1

5. 常见陷阱与解决方案

问题 MATLAB 行为 NumPy 行为 解决方案
A * B 矩阵乘法 逐元素乘法 A @ B
向量维度 明确区分行/列 一维数组无行列 需要列向量时用 .reshape(-1,1)
整数除法 5/2 = 2.5 5/2 = 2.5(Python 3) 无问题
索引越界 报错 报错 相同
默认浮点类型 double float64 相同

二、NumPy 与 Matplotlib:科学可视化黄金组合

Matplotlib 是 Python 最主流的绘图库,与 NumPy ​天然集成​。

1. 基础绘图流程

import numpy as np
import matplotlib.pyplot as plt# 1. 用 NumPy 生成数据
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)# 2. 用 Matplotlib 绘图
plt.plot(x, y, label='sin(x)')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Sine Wave')
plt.legend()
plt.grid(True)
plt.show()

✅ 关键点:​Matplotlib 直接接受 NumPy 数组作为输入​,无需转换。


2. 常见图表与 NumPy 数据

(1) 散点图(Scatter)

x = np.random.randn(100)
y = np.random.randn(100)
colors = np.random.rand(100)
sizes = 1000 * np.random.rand(100)plt.scatter(x, y, c=colors, s=sizes, alpha=0.5)
plt.colorbar()
plt.show()

(2) 图像显示(imshow)

# 生成 2D 数组(如热力图、图像)
data = np.random.rand(10, 10)plt.imshow(data, cmap='hot', interpolation='nearest')
plt.colorbar()
plt.show()

(3) 直方图

data = np.random.normal(0, 1, 1000)
plt.hist(data, bins=30, alpha=0.7)
plt.show()

(4) 3D 曲面(需 mpl_toolkits)

from mpl_toolkits.mplot3d import Axes3Dx = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(x, y)  # ← 广播生成网格!
Z = np.sin(np.sqrt(X**2 + Y**2))fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, cmap='viridis')
plt.show()

🔥 np.meshgrid() 是连接 NumPy 与 2D/3D 绘图的关键函数!


3. 高级技巧:结构化数组 + Matplotlib

# 结构化数据
dt = np.dtype([('city', 'U10'), ('temp', 'f4'), ('humidity', 'f4')])
weather = np.array([('Beijing', 30.0, 40.0),('Shanghai', 35.0, 70.0),('Guangzhou', 33.0, 80.0)
], dtype=dt)# 绘制温度柱状图
plt.bar(weather['city'], weather['temp'])
plt.ylabel('Temperature (°C)')
plt.show()

4. 性能提示

  • 避免循环绘图​:一次性传入整个数组
    # ❌ 慢
    for i in range(len(x)):plt.plot(x[i], y[i], 'o')# ✅ 快
    plt.plot(x, y, 'o')
    
  • 大数据集​:使用 plt.plot(..., rasterized=True) 或降采样

三、其他重要工具衔接

工具 与 NumPy 的关系
Pandas DataFrame 底层是 NumPy 数组;df.values 返回 ndarray
SciPy 基于 NumPy,提供高级科学计算(优化、积分、信号处理等)
scikit-learn 输入要求为 (n_samples, n_features) 的 NumPy 数组
TensorFlow / PyTorch 张量可与 NumPy 数组互转(.numpy(),torch.from_numpy()
OpenCV 图像即 NumPy 数组(H×W×C),可直接操作像素

四、迁移 checklist(MATLAB → NumPy)


总结

  • MATLAB → NumPy​:语法相似但细节差异大,重点注意索引、乘法、维度
  • NumPy + Matplotlib​:科学可视化的标准组合,数组即数据,无需转换
  • 生态协同​:NumPy 是整个 Python 科学栈的基石,与 Pandas、SciPy、深度学习框架无缝集成

📌 ​建议​:新项目直接使用 NumPy + Matplotlib + Jupyter Notebook,体验远超 MATLAB!

后续

本文主要讲述了numpy数据持久化。python过渡项目部分代码已经上传至gitee,后续会逐步更新,主要受时间原因限制,当然自己也可以克隆到本地学习拓展。

资料关注

公众号:咚咚王
gitee:https://gitee.com/wy18585051844/ai_learning

《Python编程:从入门到实践》
《利用Python进行数据分析》
《算法导论中文第三版》
《概率论与数理统计(第四版) (盛骤) 》
《程序员的数学》
《线性代数应该这样学第3版》
《微积分和数学分析引论》
《(西瓜书)周志华-机器学习》
《TensorFlow机器学习实战指南》
《Sklearn与TensorFlow机器学习实用指南》
《模式识别(第四版)》
《深度学习 deep learning》伊恩·古德费洛著 花书
《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》
《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen)》
《自然语言处理综论 第2版》
《Natural-Language-Processing-with-PyTorch》
《计算机视觉-算法与应用(中文版)》
《Learning OpenCV 4》
《AIGC:智能创作时代》杜雨+&+张孜铭
《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》
《从零构建大语言模型(中文版)》
《实战AI大模型》
《AI 3.0》

http://www.jsqmd.com/news/49561/

相关文章:

  • 北京家事律师事务所有哪些?本地优质机构推荐
  • UFS简介
  • 上海高温炉品牌推荐:聚焦行业技术与服务实力
  • 北京婚姻律师事务所推荐:如何选择专业婚姻家事法律服务机构
  • 生产制造用什么仓储软件(WMS)好?行业选型参考
  • 医疗健康领域GEO优化(AI平台推广):5家垂直服务商技术与案例解析
  • 北京专打离婚官司的律所机构参考与业务特点
  • 北京专注婚姻家事的律所推荐及业务领域解析
  • Android显示界面覆盖状态栏
  • 上海烘箱供应商有哪些?聚焦行业内的优质选择
  • 工业洗地机十大品牌推荐 聚焦企业清洁设备优选
  • 北京专业打离婚官司的律所哪家好?相关机构信息整理
  • 北京婚姻律师事务所哪家好?结合服务与口碑的综合参考
  • 北京婚姻法律师事务所排名及综合实力参考
  • 北京分割房产最好的律师事务所及相关法律服务解析
  • 全球化仓储软件(wms)哪家好?行业热门选择解析
  • 视觉外观缺陷检测系统公司推荐及行业应用解析
  • 国产仓储软件(WMS):驱动仓储管理数字化升级
  • 2025 最新运动木地板厂家推荐排行榜:体育馆 / 篮球场 / 舞蹈室 / 羽毛球馆专用实木枫木柞木防滑耐磨减震优质厂家
  • 【AIOPS】AI Agent 专题【左扬精讲】(MCP+A2A+LangChain/LangGraph)—— 纯 Go 实现 AIOPS AI Agent:Function Calling
  • 工业吸尘器品牌推荐:实力之选与选购参考
  • 北京胜率高的婚姻律师事务所推荐及业务解析
  • 2025年11月带锯床带锯条、金属锯床、四川带锯床、锯条、锯床厂家选购指南:五大顶尖供应商综合评测
  • QVector
  • 基于Boost电路、MPPT算法、逆变器和10kV配电网的光伏并网系统建模
  • 凤凰职教学培课堂怎么样?真实体验与业务解析
  • 玉田县宝田机械|废旧轮胎破碎 / 粉碎 / 切块 / 胶粉 / 胶粒设备专业处理厂家,回收处理生产线 + 钢丝去除设备领跑行业
  • 贝丽得珠光粉质量到底如何?从5个核心维度拆解行业头部企业的品质逻辑
  • 洛谷题单指南-组合数学与计数-P2567 [SCOI2010] 幸运数字
  • 学培课堂靠谱吗?从课程质量到口碑的深度分析