如何根据另一个数组在一个数组中插入值(将 scipy interp1d 与 np 百分位组合)
How to interpolate value in one array based on another array (combining scipy interp1d with np percentile)
如果我有两个 numpy 数组,当数组 y
是 NxM 时,插入对应于 y
中特定百分位数的 x
值的最简洁方法是什么数组?
例如,
x = np.array(
[
97,
4809,
4762,
282,
3879,
17454,
103,
2376,
40581,
]
)
y = np.array(
[
[
0.14,
0.11,
0.29,
0.11,
0.09,
0.68,
0.09,
0.18,
0.5,
],
[
0.32,
0.25,
0.67,
0.25,
0.21,
1.56,
0.21,
0.41,
1.15,
],
]
)
我希望 scipy 插值和 numpy 百分位数的组合可以工作,但似乎 scipy 数组维度有问题。
f = interpolate.interp1d(y, x, axis=0)
f(np.percentile(y, 50, axis=0))
returns ValueError: x and y arrays must be equal in length along interpolation axis.
预期 return 是 [0.09, 0.21]。
您在代码中混淆了 x
和 y
。这应该可以满足您的要求:
f = interpolate.interp1d(x, y)
f(np.percentile(x, 50))
如果我有两个 numpy 数组,当数组 y
是 NxM 时,插入对应于 y
中特定百分位数的 x
值的最简洁方法是什么数组?
例如,
x = np.array(
[
97,
4809,
4762,
282,
3879,
17454,
103,
2376,
40581,
]
)
y = np.array(
[
[
0.14,
0.11,
0.29,
0.11,
0.09,
0.68,
0.09,
0.18,
0.5,
],
[
0.32,
0.25,
0.67,
0.25,
0.21,
1.56,
0.21,
0.41,
1.15,
],
]
)
我希望 scipy 插值和 numpy 百分位数的组合可以工作,但似乎 scipy 数组维度有问题。
f = interpolate.interp1d(y, x, axis=0)
f(np.percentile(y, 50, axis=0))
returns ValueError: x and y arrays must be equal in length along interpolation axis.
预期 return 是 [0.09, 0.21]。
您在代码中混淆了 x
和 y
。这应该可以满足您的要求:
f = interpolate.interp1d(x, y)
f(np.percentile(x, 50))