【问题标题】:Using Pandas/NumPy to increase resolution使用 Pandas/NumPy 提高分辨率
【发布时间】:2020-04-09 10:52:45
【问题描述】:

我需要更改数组中的点数,因此新的点 y 值将与左侧的原始点的值相同。

import numpy as np

def regularizeSeries1(x, y, M = 100):
    s0 = (x - x[0])
    s1 = np.linspace(0, max(s0), M + 1)
    z = np.empty(M)
    for i in range(M):
        z[i] = y[(s0 <= s1[i])][-1]
    return(z)

x = np.array([0, 1, 2, 5, 7,8 ,10])
y = np.array([0, 1, 3,4, 6, 7.5, 9])
M = 20
Z = regularizeSeries1(x, y, M)

如何在不使用 Pandas 或 numpy 循环的情况下做到这一点?

[][1

【问题讨论】:

    标签: python pandas numpy


    【解决方案1】:

    使用 pd.ffill 合并和填充 nan

    import pandas as pd
    import numpy as np
    M = 20
    x = np.array([0, 1, 2, 5, 7,8 ,10])
    y = np.array([0, 1, 3,4, 6, 7.5, 9])
    s1 = np.linspace(0, max(s0), M)
    df1 = pd.DataFrame({'x': x, 'y': y})
    df2 = pd.DataFrame({'x': s1}) 
    df3 = df1.merge(df2, on='x', how='outer').sort_values(by='x').ffill().reset_index(drop=True) 
    df3 = df3[df3['x'].isin(df2['x'])]
    newX, newY = df3['x'], df3['y']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-04
      • 2010-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多