Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 分块是否允许对核心外阵列进行迭代?_Arrays - Fatal编程技术网

Arrays 分块是否允许对核心外阵列进行迭代?

Arrays 分块是否允许对核心外阵列进行迭代?,arrays,Arrays,提到使用concatenate=False: 在压缩的情况下,传递的函数应该期望保存该索引的任何数组上的块的iterable 那么,我的问题是,是否存在一个基本限制,即禁止这种“块的iterable”一次加载一个块,而不是将它们全部保存在列表中(即内存中)。这可能吗?现在看来,分块不是这样工作的,但我想知道它是否可以: 将dask.array导入为da 进口经营者 #创建阵列并写入磁盘 x=da.random.random(大小=(10,6),块=(5,3)) da.to_zarr(x,'/tm

提到使用
concatenate=False

在压缩的情况下,传递的函数应该期望保存该索引的任何数组上的块的iterable

那么,我的问题是,是否存在一个基本限制,即禁止这种“块的iterable”一次加载一个块,而不是将它们全部保存在
列表中(即内存中)。这可能吗?现在看来,
分块
不是这样工作的,但我想知道它是否可以:

将dask.array导入为da
进口经营者
#创建阵列并写入磁盘
x=da.random.random(大小=(10,6),块=(5,3))
da.to_zarr(x,'/tmp/x.zarr',overwrite=True)
x=da.from_zarr('/tmp/x.zarr'))
y=x.T
def fn(x,y):
打印(类型(x),类型(x[0]))
x=np。连接(x,轴=1)
y=np。连接(y,轴=0)
返回np.matmul(x,y)
da.blockwise(fn,'ik',x,'ij',y,'jk',concatenate=False,dtype='float').compute(调度器='single-threaded')
#  

这些列表有可能成为生成器吗?

这在Dask的早期是正确的,但我们最终转向了具体的列表。今天,任务只有在其所有依赖项任务都在内存中可用时才会启动

考虑到你问题的背景,我猜你在使用tensordot风格的应用程序时遇到了内存问题。tensordot风格应用程序的内存使用在很大程度上取决于块结构。我鼓励大家关注这个问题,尤其是第一篇文章中提到的演讲: