我想创建几个数组的笛卡尔积。例如,在熊猫中:
a1 = np.arange(0,30.)
a2 = np.arange(0,30.)
a3 = np.arange(0,30.)
a4 = np.arange(0,30.)
a5 = np.arange(0,30.)
df = pd.MultiIndex.from_product([a1,a2,a3,a4,a5]).to_frame(index=False)
如果再添加一个数组(a6),则内存将开始用尽。因此,我想在Dask中这样做:
p = itertools.product(*(a1,a2,a3,a4,a5))
da = dd.from_array(np.array(list(p)), chunksize=50000, columns=[0,1,2,3,4])
但是,由于将iterable转换为列表,然后转换为numpy数组,因此上述方法仍使用大量内存。必须有更好的方法来实现这一目标。