ind_index = np.asarray([np.random.choice(40, 5, False) for i in range(5)])
fit = da.random.uniform(size=40, chunks=5)
parents_index = da.argmin(fit[ind_index], axis=1)
结果应该是形状为(5,)(每行的最小索引)的数组,而是返回此错误:
Traceback (most recent call last):
File "/home/skyolia/PycharmProjects/garbage/garbage.py", line 36, in
<module>
parents_index = da.argmin(fit[ind_index], axis=1)
File "/usr/local/lib/python3.5/dist-packages/dask/array/core.py", line
1383, in __getitem__
dsk, chunks = slice_array(out, self.name, self.chunks, index2)
File "/usr/local/lib/python3.5/dist-packages/dask/array/slicing.py",
line 158, in slice_array
dsk_out, bd_out = slice_with_newaxes(out_name, in_name, blockdims,
index)
File "/usr/local/lib/python3.5/dist-packages/dask/array/slicing.py",
line 180, in slice_with_newaxes
dsk, blockdims2 = slice_wrap_lists(out_name, in_name, blockdims,
index2)
File "/usr/local/lib/python3.5/dist-packages/dask/array/slicing.py",
line 247, in slice_wrap_lists
index[where_list[0]], axis=axis)
File "/usr/local/lib/python3.5/dist-packages/dask/array/slicing.py",
line 566, in take
plan = slicing_plan(chunks[axis], index)
File "/usr/local/lib/python3.5/dist-packages/dask/array/slicing.py",
line 534, in slicing_plan
if chunk > 0:
ValueError: The truth value of an array with more than one element is
ambiguous. Use a.any() or a.all()
,但是相同的代码在纯numpy中也能很好地工作。问题出在哪里 ?很多次
答案 0 :(得分:2)
您只需在给定数组argmin
上调用fit
,然后选择进行计算以显示结果。
fit.argmin().compute()
您也可以这样做:
import dask.array as da
da.argmin(fit).compute()
或
import numpy as np
np.argmin(fit).compute()
请记住,fit
是大小为40的一个数组。也许您应该用文字描述您要实现的目标?也许大小应该是像(40, 5)
这样的元组或类似的东西?