python数据缩放

很多时候我们想对一个数据画图,这个数据的图的形状是我们需要的,但是y轴的刻度不对,可能大了或者小了,我们想不改变这个数据的分布和形状画出来的图的情况下,对这个数据进行一定程度的缩放,可以按照下面的方法来。


先导入包

import numpy as np
import matplotlib.pyplot as plt

我们先生成一组数据

# 生成y的值
x = np.linspace(-5, 5, 100)
y = 2 * x**3 - 3 * x**2 + 4 * x + 1
# 加噪声
noise = np.random.normal(0, 10, size=y.shape)
y_noisy = y + noise
# 绘制图形
plt.figure(figsize=(7,3))
plt.plot(y_noisy)
plt.show()

可以看到数据的折线图,形状大概是这样的。然后查看其取值区间

y_noisy.min(),y_noisy.max()

 

最小值和最大值的情况,y在这个区间里面,然后我们需要进行映射到另外一个区间里面去。


 映射公式

gpt告诉我的,很对,然后我把他写的代码改了一下,成为了下面这个缩放函数。

def Linear_transformation(y,interval=[-3,3]):
    y=np.array(y)
    y_min = y.min()  ;  y_max = y.max()
    a = interval[0]  ;  b = interval[-1]
    y_new = (b-a)*(y-y_min)/(y_max-y_min)+a
    return y_new

 # 假设y要映射到(-5,5)

y_new=Linear_transformation(y_noisy,interval=[-5,5])
y_new

画图查看 

plt.figure(figsize=(7,3))
plt.plot(y_new)
plt.show()

 

 可以很清楚的看到,数据明显形状和原来是一模一样的,但是y轴变了,变成了-5到5的区间里面了。

想放大也是可以的,比如放大到-1000到1000里面去

plt.figure(figsize=(7,3))
plt.plot(Linear_transformation(y_noisy,interval=[-1000,1000]))
plt.show()

很好用。这样再也不用担心画图的时候数据范围不对的问题了...... 

猜你喜欢

转载自blog.csdn.net/weixin_46277779/article/details/130248107