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

最近常用 python 记录

python 一些知识

  • 1. FFT生成
  • 2. plot功能
  • 3. 数据类型

1. FFT生成

使用示例

N = len(data)
fft_data = np.fft.fft(data)
fft_freqs = np.fft.fftfreq(N, d=1/44100)  # 修改采样间隔

plt.plot(fft_freqs[:N//2], np.abs(fft_data)[:N//2])
plt.xlim(0, 20000)  # 限制横轴显示0-20000 Hz
plt.show()

函数解释

N = len(data)
//  data 进行FFT,返回复数数组 fft_data,表示频域结果(包含幅度和相位信息)。
fft_data = np.fft.fft(data) 
// np.fft.fftfreq(N, d) 生成与FFT结果对应的频率值数组。
// N 是信号长度(len(data)),d 是采样间隔(单位:秒),这里设为 1/120000,意味着采样率为 120000 Hz(每秒采样12万次)。
fft_freqs = np.fft.fftfreq(N, d=1/120000) 

// 只绘制前半部分(N//2)的频率和幅度,因为FFT结果是对称的,后半部分是前半部分的镜像。
// np.abs(fft_data) 计算FFT结果的幅度(模值)。
plt.plot(fft_freqs[:N//2], np.abs(fft_data)[:N//2], label='Spectrum')

2. plot功能

使用示例

import matplotlib.pyplot as plt
import numpy as np

// 数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

// 创建画布
plt.figure(figsize=(8, 6))

// 绘制折线图
plt.plot(x, y1, label="Sine", color="blue", linestyle="-", marker="o")
plt.plot(x, y2, label="Cosine", color="red", linestyle="--", marker="s")

// 设置标题和标签
plt.title("Sine and Cosine Functions", fontsize=16)
plt.xlabel("X-axis", fontsize=12)
plt.ylabel("Y-axis", fontsize=12)

// 设置范围和刻度
plt.xlim(0, 10)
plt.ylim(-1.5, 1.5)
plt.xticks(np.arange(0, 11, 2))
plt.yticks(np.arange(-1, 1.1, 0.5))

// 添加网格和图例
plt.grid(True, linestyle="--", alpha=0.6)
plt.legend(loc="upper right", fontsize=10)

// 显示图形
plt.show()

函数解释

// figsize=(width, height):设置画布大小(单位为英寸)。
//dpi:设置分辨率(每英寸的像素数)
plt.figure(figsize=(8, 6), dpi=100)

// nrows, ncols, index:将画布分为 nrows x ncols 的网格,并选择第 index 个子图。
plt.subplot(2, 1, 1) 

// 绘制折线图。x, y:x 轴和 y 轴数据;label:图例标签;color:线条颜色;
// linestyle:线条样式(如 '-', '--', ':');marker:标记样式(如 'o', 's', '^')。
plt.plot(x, y, label='Line', color='blue', linestyle='-', marker='o')

// 绘制散点图。
// x, y:x 轴和 y 轴数据;c:点的颜色;s:点的大小。
plt.scatter(x, y, c='red', s=50)

// 绘制柱状图。
plt.bar([1, 2, 3], [4, 5, 6], width=0.5, color='green')

// 绘制直方图。
plt.hist(data, bins=10, color='orange')

// 设置图形的标题。 title:标题文本;fontsize:字体大小。
plt.title("Frequency Spectrum", fontsize=16)

// 设置 x 轴和 y 轴的标签。 xlabel, ylabel:轴标签文本;fontsize:字体大小。
plt.xlabel("Frequency (Hz)", fontsize=12)
plt.ylabel("Magnitude", fontsize=12)

// 设置 x 轴和 y 轴的范围。xlim, ylim:轴范围,格式为 [min, max]。
plt.xlim(0, 100)
plt.ylim(0, 1)

// 设置 x 轴和 y 轴的刻度。ticks:刻度位置;labels:刻度标签。
plt.xticks([0, 50, 100], ["Low", "Medium", "High"])
plt.yticks([0, 0.5, 1], ["Min", "Mid", "Max"])

// 添加网格线。visible:是否显示网格;linestyle:网格线样式;alpha:透明度。
plt.grid(True, linestyle='--', alpha=0.6)

// 添加图例。loc:图例位置(如 'upper right');fontsize:字体大小。
plt.legend(loc="upper right", fontsize=10)

// 显示绘制的图形。
plt.show()

// 将图形保存为文件。
// fname:文件名;dpi:分辨率;format:文件格式(如 'png', 'pdf')。
plt.savefig("plot.png", dpi=300, format="png")

3. 数据类型

序列: 列表、元组、字符串等都属于序列,具有索引和切片操作。
集合: 集合是一种无序且不重复的元素集合,用花括号 {} 或 set() 表示。

元组: 一旦创建就不能被修改。使用()或tuple()创建,元素之间用逗号,分隔可以使用或者不使用小括号继承了序列的全部操作。

# 定义一个元组
my_tuple = (1, 2, 3, "apple", "banana")
# 访问元素
print(my_tuple[0])  # 输出: 1
print(my_tuple[3])  # 输出: apple
# 切片操作
print(my_tuple[1:4])  # 输出: (2, 3, 'apple')
# 尝试修改元组(会报错)
# my_tuple[0] = 10  # TypeError: 'tuple' object does not support item assignment

列表: 是一种序列类型,创建后可以随意修改,使用方括号[]或list()创建,元素间用逗号,分隔,可以使用或不适用方括号。

>>> ls =['cat','dog','tiger',1024]
>>> ls
['cat','dog','tiger',1024]
>>> lt=ls     # 方括号[]真正创建一个列表,赋值仅传递引用
>>>> lt
['cat','dog','tiger',1024]

字典: 字典类型是映射的体现。作用就是表达键值对,进而操作它们。 一种无序的键值对集合,用花括号 {} 表示。
键值对:键是数据索引的扩展
字典是键值对的集合,键值对之间无序。
采用{}和dict()创建,键值对之间用冒号 :表示
[] 用来向字典变量中索引或增加元素
通过{}来创建空的字典。集合类型也是用{}的,但是因为字典常用,所以把{}的留给了字典

# 定义一个字典
my_dict = {"name": "Alice", "age": 25, "city": "New York"}
# 访问值
print(my_dict["name"])  # 输出: Alice
# 修改值
my_dict["age"] = 26
print(my_dict["age"])  # 输出: 26
# 添加新键值对
my_dict["country"] = "USA"
print(my_dict)  # 输出: {'name': 'Alice', 'age': 26, 'city': 'New York', 'country': 'USA'}
# 删除键值对
del my_dict["city"]
print(my_dict)  # 输出: {'name': 'Alice', 'age': 26, 'country': 'USA'}
http://www.dtcms.com/a/109933.html

相关文章:

  • 环境数据综合分析系统
  • 贤小二c#版Yolov5 yolov8 yolov10 yolov11自动标注工具 + 免python环境 GPU一键训练包
  • 贴片加工SMT厂核心工艺解析
  • 码界奇缘 Java 觉醒 第二章 变量迷城
  • 计算机网络-TCP的重传机制
  • 清晰易懂的 Flutter 开发环境搭建教程
  • java短连接,长连接
  • Linux命令-uniq
  • RAGFlow部署与使用介绍-深度文档理解和检索增强生成
  • 本地部署 Firecrawl 爬虫让 AI 知识库更丰满
  • Java创建对象和spring创建对象的过程和区别
  • AI赋能数据库管理“最后一公里”,融合架构重塑数据库承载成本效能——zCloud 6.7与zData X 3.3正式发布
  • MonkeyDev 如何创建一个root级级别的app,并执行root命令获取iphone设备序列号serialNumber(ios15.8)
  • 航电系统之承重与避障技术
  • “二分查找 + (必要时)前缀和” -- 处理 ’有序数组‘ 的区间问题汇总
  • 信息学奥赛一本通 1524:旅游航道
  • 胶铁一体化产品介绍
  • 什么是 SAML身份验证
  • 【DY】信息化集成化信号采集与处理系统;生物信号采集处理系统一体机
  • Qt实现登录界面(输入密码后过几秒,密码变为小黑点,眼睛改变密码明文,密文)
  • 电子电气架构 --- SOC设计流程及其集成开发环境
  • 企业知识库如何搭建?从零开始构建高效知识管理体系
  • 【Spring】Spring 注解解码:@RequestBody 与 @ResponseBody 的双向桥梁艺术
  • 2024年B会(Coling)——双重对比学习用于多模态对话情感识别
  • 数字人训练数据修正和查看 不需要GPU也能运行的DH_live-加载自己训练-
  • 注意力机制在大语言模型中的原理与实现总结
  • 【算法中的数学】分解质因数
  • 每天学一个 Linux 命令(11):cp
  • 【系统移植】(六)第三方驱动移植
  • MySQL:数据类型