多个数组上插值值的矢量和

2024-04-23 20:36:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个大集(数千)平滑线(一系列的x,y对),有不同的x和y采样,每一条线的长度不同,即

x_0 = {x_00, x_01, ..., }  # length n_0
x_1 = {x_10, x_11, ..., }  # length n_1
...
x_m = {x_m0, x_m1, ..., }  # length n_m

y_0 = {y_00, y_01, ..., }  # length n_0
y_1 = {y_10, y_11, ..., }  # length n_1
...
y_m = {y_m0, y_m1, ..., }  # length n_m

我想找出每一条插值到一组规则x点的线的累积性质,即x = {x_0, x_1 ..., x_n-1}

目前我正在for-在每一行上循环,创建一个插入点,重新采样,然后取结果的总和/中值/任何值。它很管用,但很慢。是否有任何方法将此操作矢量化/矩阵化?

我在想,既然线性插值可以是一个矩阵运算,也许这是可能的。同时,由于每行的长度不同。。。可能很复杂。编辑:但是零填充较短的数组会很容易。。。


我现在所做的看起来像

^{pr2}$

Tags: 方法编辑for规则矩阵数组length矢量化
1条回答
网友
1楼 · 发布于 2024-04-23 20:36:50

希望您可以根据自己的目的调整以下内容。在

我加入pandas是因为它有一个插值功能来填充缺失的值。在

设置

import pandas as pd
import numpy as np

x = np.arange(19)
x_0 = x[::2]
x_1 = x[::3]

np.random.seed([3,1415])
y_0 = x_0 + np.random.randn(len(x_0)) * 2
y_1 = x_1 + np.random.randn(len(x_1)) * 2

xy_0 = pd.DataFrame(y_0, index=x_0)
xy_1 = pd.DataFrame(y_1, index=x_1)

注:

  • x长度为19
  • x_0长度为10
  • x_1长度为7

xy_0看起来像:

^{pr2}$

xy_0可以通过reindex与{}对齐

xy_0.reindex(x)

            0
0   -4.259448
1         NaN
2   -0.536932
3         NaN
4    0.059001
5         NaN
6    1.481890
7         NaN
8    7.301427
9         NaN
10   9.946090
11        NaN
12  12.632472
13        NaN
14  14.697564
15        NaN
16  17.430729
17        NaN
18  19.541526

{cd8>然后我们可以补上缺的

xy_0.reindex(x).interpolate()

            0
0   -4.259448
1   -2.398190
2   -0.536932
3   -0.238966
4    0.059001
5    0.770445
6    1.481890
7    4.391659
8    7.301427
9    8.623759
10   9.946090
11  11.289281
12  12.632472
13  13.665018
14  14.697564
15  16.064147
16  17.430729
17  18.486128
18  19.541526

xy_1

xy_1.reindex(x)

            0
0   -1.216416
1         NaN
2         NaN
3    3.704781
4         NaN
5         NaN
6    5.294958
7         NaN
8         NaN
9    8.168262
10        NaN
11        NaN
12  10.176849
13        NaN
14        NaN
15  14.714924
16        NaN
17        NaN
18  19.493678

内插

xy_0.reindex(x).interpolate()

            0
0   -1.216416
1    0.423983
2    2.064382
3    3.704781
4    4.234840
5    4.764899
6    5.294958
7    6.252726
8    7.210494
9    8.168262
10   8.837791
11   9.507320
12  10.176849
13  11.689541
14  13.202233
15  14.714924
16  16.307842
17  17.900760
18  19.493678

相关问题 更多 >