【发布时间】:2018-08-16 23:41:13
【问题描述】:
所以我正在尝试做一些插值,我只是想知道我使用的代码是否可能更高效。
所以问题是这样的。我有一个值数组,其中包含来自许多不同站点的数据。它的尺寸为 N x 85,N 可能会因世界各地而异。
到目前为止,它们之间的时间间隔并不均匀。 0:51 列之间有 3 小时的 timedelta,然后 52:84 列之间有 6 小时的 timedelta。我只想在它们之间做一个简单的线性插值,以便所有行之间都有 3 小时的间距,所以基本上只是计算行之间的平均值 52:84 并将它们插入正确的位置.
这是一个小规模示例的快速代码示例,这是我目前正在做的,但效率不高(插入函数是我想避免的)。
import numpy as np
np.set_printoptions(linewidth=np.nan)
array = np.random.rand(5, 10) * 10
print(array)
interpolation_array = np.empty((5, 4))
for i, j in enumerate(list(range(5, 9))):
interpolation_array[:, i] = np.mean(array[:, j:(j+2)], axis=1)
print(interpolation_array)
# This is the line that is not memory efficient
final_array = np.insert(array, list(range(6, 10)), interpolation_array, axis=1)
print(final_array)
【问题讨论】:
-
如果你只做一个插入,我看不出有什么问题。您不能就地增长原始数组。
-
如果不想使用
insert,可以创建一个足够大的final_array,并将array和interpolation_array中的值复制到必要的槽中。跨度> -
@hdpaulj 这就是我的想法,我只是想确保我没有错过可以让我加快速度的内置内容。谢谢
标签: python numpy memory-efficient