【发布时间】:2021-11-17 17:29:27
【问题描述】:
我有一个 np.array,我需要将其大小设为两倍/三倍/四倍。我想通过在每 2 个连续元素之间添加 1/2/3 个元素来做到这一点。 例如:
np.array([1,2,3,4,5])
成为
np.array([1,1.5,2,2.5,3,3.5,4,4.5,5,5.5])
使用 python 做到这一点没有问题。但我需要最快的方法,最好使用 Numpy/Scipy。
【问题讨论】:
我有一个 np.array,我需要将其大小设为两倍/三倍/四倍。我想通过在每 2 个连续元素之间添加 1/2/3 个元素来做到这一点。 例如:
np.array([1,2,3,4,5])
成为
np.array([1,1.5,2,2.5,3,3.5,4,4.5,5,5.5])
使用 python 做到这一点没有问题。但我需要最快的方法,最好使用 Numpy/Scipy。
【问题讨论】:
a = np.array([1,2,3,4,5])
ur = 2 # upsample rate
np.interp(np.arange((len(a)-1)*ur+1)/ur, xp=np.arange(len(a)), fp=a)
# output: array([1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5, 5.])
【讨论】:
可能比 Marat 的效率低,但它确实有效:
import numpy as np
my_list = [1,2,3,4,5]
new_list = np.concatenate([np.linspace(i, i+1, 3) for i in range(len(my_list))[1:]])
print(list(dict.fromkeys(new_list)))
输出:
[1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0]
对于numpy arrays,它是等价的。
【讨论】: