gpt4 book ai didi

python - 使用 Dask 数组和/或 h5py 进行循环

转载 作者:行者123 更新时间:2023-12-01 02:17:11 27 4
gpt4 key购买 nike

我有一个包含超过一亿行数据的时间序列。我正在尝试 reshape 它以包含一个时间窗口。我的样本数据的形状为 (79499, 9),我正在尝试将其 reshape 为 (79979, 10, 9)。以下 for 循环在 numpy 中运行良好。

def munge(data, backprop_window):
result = []
for index in range(len(data) - backprop_window):
result.append(data[index: index + backprop_window])
return np.array(result)

X_train = munge(X_train, backprop_window)

我尝试了 dask 的一些变体,但它们似乎都挂起而没有给出任何错误消息,包括这个:

import h5py
import dask.array as da
f1 = h5py.File("data.hdf5")
X_train = f1.create_dataset('X_train',data = X_train, dtype='float32')
x = da.from_array(X_train, chunks=(10000, d.shape[1]))
result = x.compute(munge(x, backprop_window))

任何明智的想法都值得赞赏。

最佳答案

这不一定能解决您的 dask 问题,但作为 munge 的更快替代方案,您可以使用 numpy 的 stride_tricks 来创建数据的 ScrollView (基于示例 here )。

def munge_strides(data, backprop_window):
""" take a rolling view into array by manipulating strides """
from numpy.lib.stride_tricks import as_strided
new_shape = (data.shape[0] - backprop_window,
backprop_window,
data.shape[1])
new_strides = (data.strides[0], data.strides[0], data.strides[1])
return as_strided(data, shape=new_shape, strides=new_strides)

X_train = np.arange(100).reshape(20, 5)

np.array_equal(munge(X_train, backprop_window=3),
munge_strides(X_train, backprop_window=3))
Out[112]: True

as_strided 需要非常小心地使用 - 这是一个“高级”功能,不正确的参数很容易导致您陷入段错误 - 请参阅 docstring

关于python - 使用 Dask 数组和/或 h5py 进行循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48285891/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com