第一章:Python与科学计算环境搭建

各位同学好,我是老张。搞了十几年轴承故障诊断,说实话,最早我也是用MATLAB的。但后来发现Python在数据处理和深度学习方面越来越方便,就彻底转过来了。今天咱们就从零开始,把Python的科学计算环境搭起来。

这一章的内容说白了就是三件事:装软件、用工具、学基础库。别小看这一步,我见过太多人因为环境没配好,后面代码跑不通,白白浪费一整天。嗯,咱们一步步来。

1.1 Anaconda安装——一步到位

为什么要用Anaconda?说白了,它就是个Python全家桶。你想想看,搞信号处理要装NumPy、SciPy、Matplotlib,搞机器学习要装scikit-learn、TensorFlow,一个个手动装多麻烦。Anaconda一次性给你打包好了,还自带包管理工具conda,省心。

安装步骤:

  1. 去Anaconda官网下载对应系统的安装包(Windows/Mac/Linux)
  2. 双击安装,一路默认就行
  3. 注意:安装时勾选"Add Anaconda to my PATH environment variable"
  4. 安装完成后,打开终端(或cmd),输入 conda --version 验证
⚠️ 避坑指南: 我曾经遇到过学生装了Anaconda后,又去官网单独装Python,结果两个版本冲突,包管理乱成一锅粥。记住:Anaconda自带Python,不需要额外安装!

我个人习惯用conda创建虚拟环境,每个项目一个环境,互不干扰。比如咱们这个轴承故障诊断课程,我就专门建了一个环境:

conda create -n bearing_diag python=3.9
conda activate bearing_diag

这样就算你后面装其他库搞坏了环境,也不会影响其他项目。这个习惯我建议你从一开始就养成。

1.2 Jupyter Notebook——交互式编程利器

搞信号分析,最烦的就是写一大段代码然后运行,发现结果不对,又得从头改。Jupyter Notebook的好处是:你可以一段一段地跑代码,边跑边看结果,特别适合做数据探索和算法验证。

启动方式:

# 在终端输入
jupyter notebook

浏览器会自动打开一个页面,点"New" → "Python 3"就能新建一个笔记本。界面很直观,上面是代码框,下面是输出结果。我在项目中经常用它来做振动信号的实时可视化,一边调参数一边看波形变化,效率很高。

💡 小技巧:Shift + Enter 运行当前单元格,并自动创建下一个。按 Esc + M 可以把单元格切换成Markdown模式,方便写注释和公式。

你想想看,传统方式写个脚本,改个参数就得重新跑整个文件。用Jupyter Notebook,你只需要重新跑那个单元格就行。这就是为什么很多数据科学家都爱用它。

1.3 NumPy快速入门——数组运算的基础

做轴承故障诊断,振动信号本质上就是一串数字。NumPy就是专门处理这种数字数组的库。它的核心是ndarray(N维数组),比Python自带的列表快得多。

创建数组:

import numpy as np

# 从列表创建
arr = np.array([1, 2, 3, 4, 5])

# 创建全零数组
zeros = np.zeros(10)

# 创建等差数列(模拟时间轴)
time = np.linspace(0, 1, 1000)  # 0到1秒,1000个点

常用操作:

操作 代码 说明
数组形状 arr.shape 返回维度信息
索引切片 arr[0:10] 取前10个元素
统计运算 np.mean(arr) 计算均值
傅里叶变换 np.fft.fft(arr) 快速傅里叶变换

我记得刚开始用NumPy时,最不习惯的就是它没有循环。后来才明白,向量化运算才是它的精髓。比如你要计算所有振动数据的平方和,用 np.sum(arr**2) 一行搞定,比写for循环快几十倍。

1.4 SciPy快速入门——信号处理的瑞士军刀

SciPy建立在NumPy之上,提供了更多高级功能。对于咱们做故障诊断的,最常用的就是signal模块。

信号处理常用函数:

from scipy import signal

# 生成一个模拟的轴承振动信号(正弦波+噪声)
t = np.linspace(0, 1, 1000)
vibration = np.sin(2 * np.pi * 50 * t) + 0.5 * np.random.randn(1000)

# 低通滤波(滤掉高频噪声)
b, a = signal.butter(4, 0.1, 'low')  # 4阶巴特沃斯滤波器
filtered = signal.filtfilt(b, a, vibration)

# 计算功率谱密度
f, Pxx = signal.welch(vibration, fs=1000)
🔑 核心要点: SciPy的signal模块几乎涵盖了所有经典信号处理方法。从滤波、频谱分析到小波变换,你需要的它都有。我处理实际项目时,90%的信号预处理工作都是用SciPy完成的。

为什么会推荐filtfilt而不是lfilter?因为filtfilt是零相位滤波,不会引入相位偏移。这对轴承故障诊断很重要——你想想看,如果滤波后信号的峰值位置都变了,那还怎么准确判断故障时刻?

1.5 本章知识体系

下面这张图总结了咱们这一章的核心内容,我建议你保存下来,后面学习时随时对照:

Python科学计算环境搭建 Anaconda Jupyter Notebook NumPy + SciPy 包管理 虚拟环境 conda命令 交互式编程 代码分段执行 Markdown注释 数组运算 信号滤波 频谱分析 目标:搭建完整的轴承故障信号分析环境

1.6 动手试试

光看不练可不行。我建议你现在就打开终端,按下面的步骤走一遍:

  1. 安装Anaconda(大概10分钟)
  2. 创建虚拟环境 conda create -n bearing_diag python=3.9
  3. 激活环境,启动Jupyter Notebook
  4. 新建一个笔记本,输入 import numpy as npimport scipy as sp
  5. 试试生成一个正弦波,画个图看看
💡 如果遇到问题: 别慌。我刚开始用conda时也经常遇到网络超时。可以试试换国内镜像源:conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

好了,这一章的内容就这些。环境搭好了,后面咱们就能直接上手处理真实的轴承振动信号了。记住:工欲善其事,必先利其器。把基础打牢,后面学起来才顺畅。


专注资料整理