如何根据另一个数组在一个数组中插入值(将 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]。

您在代码中混淆了 xy。这应该可以满足您的要求:

f = interpolate.interp1d(x, y)
f(np.percentile(x, 50))