堆栈__array__上的堆栈溢出

时间:2020-05-04 11:15:55

标签: dask

我有一个使用-lstdc++fs的简单程序:

dask

运行该程序会导致如下错误:

import dask.array as darray
import numpy as np

X = np.array([[1.,2.,3.],
              [4.,5.,6.],
              [7.,8.,9.]])
arr = darray.from_array(X)
arr = arr[:,0]
a = darray.min(arr)
b = darray.max(arr)
quantiles = darray.linspace(a, b, 4)
print(np.array(quantiles))

Python的版本为3.7.1,而Traceback (most recent call last): File "discretization.py", line 12, in <module> print(np.array(quantiles)) File "/Users/zhujun/job/adf/local_training/venv/lib/python3.7/site-packages/dask/array/core.py", line 1341, in __array__ x = np.array(x) File "/Users/zhujun/job/adf/local_training/venv/lib/python3.7/site-packages/dask/array/core.py", line 1341, in __array__ x = np.array(x) File "/Users/zhujun/job/adf/local_training/venv/lib/python3.7/site-packages/dask/array/core.py", line 1341, in __array__ x = np.array(x) [Previous line repeated 325 more times] File "/Users/zhujun/job/adf/local_training/venv/lib/python3.7/site-packages/dask/array/core.py", line 1337, in __array__ x = self.compute() File "/Users/zhujun/job/adf/local_training/venv/lib/python3.7/site-packages/dask/base.py", line 166, in compute (result,) = compute(self, traverse=False, **kwargs) File "/Users/zhujun/job/adf/local_training/venv/lib/python3.7/site-packages/dask/base.py", line 434, in compute dsk = collections_to_dsk(collections, optimize_graph, **kwargs) File "/Users/zhujun/job/adf/local_training/venv/lib/python3.7/site-packages/dask/base.py", line 220, in collections_to_dsk [opt(dsk, keys, **kwargs) for opt, (dsk, keys) in groups.items()], File "/Users/zhujun/job/adf/local_training/venv/lib/python3.7/site-packages/dask/base.py", line 220, in <listcomp> [opt(dsk, keys, **kwargs) for opt, (dsk, keys) in groups.items()], File "/Users/zhujun/job/adf/local_training/venv/lib/python3.7/site-packages/dask/array/optimization.py", line 42, in optimize dsk = optimize_blockwise(dsk, keys=keys) File "/Users/zhujun/job/adf/local_training/venv/lib/python3.7/site-packages/dask/blockwise.py", line 547, in optimize_blockwise out = _optimize_blockwise(graph, keys=keys) File "/Users/zhujun/job/adf/local_training/venv/lib/python3.7/site-packages/dask/blockwise.py", line 572, in _optimize_blockwise if isinstance(layers[layer], Blockwise): File "/anaconda3/lib/python3.7/abc.py", line 139, in __instancecheck__ return _abc_instancecheck(cls, instance) RecursionError: maximum recursion depth exceeded in comparison 的版本为2.15.0。

此程序有什么问题?

谢谢。

1 个答案:

答案 0 :(得分:0)

使用以下任一包装组合:

dask==2.15.0
numpy<1.16.0
toolz==0.9.0
dask==2.16.0
numpy<1.17.0
toolz==0.9.0

以下程序可以无问题地执行:

import dask.array as darray
import numpy as np

X = np.array([[1.,2.,3.],
              [4.,5.,6.],
              [7.,8.,9.]])
arr = darray.from_array(X)
arr = arr[:,0]
a = darray.min(arr)
b = darray.max(arr)

q0 = darray.linspace(a, b, 4)
print(np.array(q0))

以上软件包列表中的密钥为numpy。较新的numpy版本可能会导致错误。

正如@mdurant所建议的那样,linspace的实现尚不接受惰性输入。因此,这些软件包组合有效的事实可能是巧合。

在我完全了解这里发生的事情之前,我将一直保持这个问题。