最近常用 python 记录

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'}

4. torch函数

// *size:指定张量的维度,例如 torch.randn(2, 3) 生成一个 2x3 的二维张量。
// size = [batch_size, channels, height, width]
// bathc_size:表示一次推断的样本数
// channels:如图像的 RGB 通道。
// length:如音频的采样点数或文本序列的长度。
// feature dimension:可能表示某种额外的特征或占位符。
// 二维:
torch.randn(*size)

// 生成 [0, 1) 区间均匀分布的随机数
torch.rand()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值