我需要将dask.Bag of {'imgs': np.array(img_list), 'lables': np.array(label_list)}转换成两个独立的dask.Array-s。为什么我创建了袋子而不是直接去数组?因为我正在通过map()多次处理这个包,所以没有对Array做同样的处理。
现在,下面的代码适用于小型数据集,但显然不能用于更大的数据。
images_array = da.from_array(np.array([item['images'] for item in imgs_labels_bag]), chunks=chunksize)
labels_array = da.from_array(np.array([item['labels'] for item in imgs_labels_bag]), chunks=chunksize)如何在不将objs转换为numpy的情况下做到这一点?
想法:
b_dict.map(json.dumps).to_textfiles("/path/to/data/*.json")还有其他想法吗?
发布于 2017-11-29 04:50:10
如果item['images']是一维numpy数组,并且希望以以下方式平铺它们:
+---------------+
|item0['images']|
+---------------+
|item1['images']|
+---------------+
|item2['images']|
+---------------+ 然后这个可以工作(文档):
import dask.bag as db
import numpy as np
import dask.array as da
b = db.from_sequence([{'img':np.arange(10)}]*4)
s = da.stack([item['img'] for item in b], axis=0)
print(s.compute())结果:
[[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7 8 9]
[0 1 2 3 4 5 6 7 8 9]]发布于 2017-11-29 13:28:17
我建议采取以下步骤:
images和labels值).map_partitions(np.stack)或.map_partitions(np.concatenate) (取决于您所关心的形状)将每个分区转换为单个numpy数组.to_delayed对象dask.array.from_delayedda.concatenate将这些dask数组叠加或连接到一个单一的da.concatenate中。https://stackoverflow.com/questions/47542788
复制相似问题