Numpy 无法使用dask存储阵列
我使用以下代码创建一个数组,并以hdf5格式顺序存储结果。我正在查看dask文档,建议使用dask.store来存储在类似我的函数中生成的数组。但是我收到一个错误:Numpy 无法使用dask存储阵列,numpy,dask,h5py,Numpy,Dask,H5py,我使用以下代码创建一个数组,并以hdf5格式顺序存储结果。我正在查看dask文档,建议使用dask.store来存储在类似我的函数中生成的数组。但是我收到一个错误:dask没有属性存储 我的代码: import os import numpy as np import time import concurrent.futures import multiprocessing from itertools import product import h5py import dask as
dask没有属性存储
我的代码:
import os
import numpy as np
import time
import concurrent.futures
import multiprocessing
from itertools import product
import h5py
import dask as da
def mean_py(array):
start_time = time.time()
x = array.shape[1]
y = array.shape[2]
values = np.empty((x,y), type(array[0][0][0]))
for i in range(x):
for j in range(y):
values[i][j] = ((np.mean(array[:,i,j])))
end_time = time.time()
hours, rem = divmod(end_time-start_time, 3600)
minutes, seconds = divmod(rem,60)
print("{:0>2}:{:0>2}:{:05.2f}".format(int(hours), int(minutes), int(seconds)))
print(f"{'.'*80}")
return values
def generate_random_array():
a = np.random.randn(120560400).reshape(10980,10980)
return a
def generate_array(nums):
for num in range(nums):
a = generate_random_array()
f = h5py.File('test_db.hdf5')
d = f.require_dataset('/data', shape=a.shape, dtype=a.dtype)
da.store(a, d)
start = time.time()
generate_array(8)
end = time.time()
print(f'\nTime complete: {end-start:.2f}s\n')
我应该使用dask执行这样的任务,还是建议直接使用h5py存储结果?
请忽略平均值(数组)函数。这是为了在数据生成后我想尝试的东西 正如评论中所建议的,您目前正在这样做
import dask as da
你什么时候可能想这么做
import dask.array as da
如果没有
dask
,d[…]=a
就足够了。在循环中,您希望f.close()
。请注意,这不会进行顺序写入。每次迭代都将一个新的a
数据写入/data
。文档存储的dask
页面定义:import dask.array as da
,感谢您的建议。对不起,我忽略了进口。我会试试这个。肯定很有帮助!:)