• python 离散序列 样本数伸缩(原创)


    解决问题:

    有一个固定长度的1维矩阵,将这个矩阵的取样点进行扩充和减少

    功能函数:

     1 def discrete_scale(data, num):
     2     import numpy as np
     3     import copy
     4     """
     5     :param data: 原始一维矩阵数据
     6     :param num: 设定的样本长度
     7     :return d1: 目标矩阵输出
     8     """
     9     len = data.shape[0]  # 原始数据长度
    10 
    11     if len < num:  # 样本扩展
    12         t = (len - 1) / (num - 1)  # 映射差值
    13         d0 = np.array(range(num))  # 序列映射
    14         d0 = d0 * t
    15 
    16         d0_1 = copy.deepcopy(d0).astype(int)  # 整数部分
    17         d0_0 = d0 - d0_1  # 小数部分
    18         dist = data[1:] - data[:-1]  # 维度减小一个数据
    19         d1_1 = data[d0_1]
    20         d1_0 = dist[d0_1[:-1]]
    21         d1_0 = d1_0 * d0_0[:-1]
    22         d1 = copy.deepcopy(d1_1[:-1] + d1_0)
    23         d1 = np.hstack((d1, data[-1]))
    24 
    25     elif len > num:  # 样本压缩
    26         t = (len - 1) / num  # 映射差值 分成7个给值区域
    27         d0 = np.array(range(num + 1))  # 序列映射
    28         d0 = d0 * t
    29 
    30         d0_1 = copy.deepcopy(d0).astype(int)  # 整数部分
    31         list = []
    32         for i in range(d0_1.shape[0] - 1):
    33             list.append(np.mean(data[d0_1[i]:d0_1[i + 1] + 1]))
    34         d1 = np.array(list)
    35 
    36     else:   # 目标长度与原始长度相同
    37         d1 = data
    38     return d1

    实例程序:

     1 import numpy as np
     2 a = np.array(range(0,1000))
     3 print(a)
     4 b = np.sin(a/100)
     5 print(b)
     6 
     7 num = 100
     8 x1 = np.array(range(num))
     9 y1 = discrete_scale(b, num)
    10 
    11 import matplotlib.pylab as plt
    12 plt.plot(x1, y1, 'r-')
    13 plt.plot(a, b, 'b-')
    14 plt.show()
    15 print(b)

  • 相关阅读:
    继承与派生
    函数,迭代器,生成器
    面向对象
    函数
    模块与包
    python面试题(转自https://www.cnblogs.com/wupeiqi/p/9078770.html)
    python学习大纲目录(转自alex博客https://www.cnblogs.com/alex3714/)
    Mysql(基础篇)
    初识HTML和CSS2
    初识前端作业1
  • 原文地址:https://www.cnblogs.com/Mufasa/p/10179498.html
Copyright © 2020-2023  润新知