Python 如何返回此数组的最小索引?

Python 如何返回此数组的最小索引?,python,numpy,dask,Python,Numpy,Dask,结果应该是一个shape(5,)(每行的最小索引)数组,而不是返回以下错误: 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) 回溯(最近一次呼叫最后一次): 文件“/home/skyolia/PycharmPr

结果应该是一个shape(5,)(每行的最小索引)数组,而不是返回以下错误:

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)
回溯(最近一次呼叫最后一次):
文件“/home/skyolia/PycharmProjects/garbage/garbage.py”,第36行,在
父项索引=da.argmin(拟合[ind\u index],轴=1)
文件“/usr/local/lib/python3.5/dist-packages/dask/array/core.py”,第行
1383,在__
dsk,chunks=slice_数组(out,self.name,self.chunks,index2)
文件“/usr/local/lib/python3.5/dist-packages/dask/array/slicing.py”,
第158行,在切片数组中
dsk_out,bd_out=带新轴的切片(out_name,in_name,blockdims,
索引)
文件“/usr/local/lib/python3.5/dist-packages/dask/array/slicing.py”,
第180行,在带新轴的切片中
dsk,blockdims2=切片包裹列表(外名称、内名称、块DIMS、,
index2)
文件“/usr/local/lib/python3.5/dist-packages/dask/array/slicing.py”,
第247行,在切片列表中
索引[其中_列表[0]],轴=轴)
文件“/usr/local/lib/python3.5/dist-packages/dask/array/slicing.py”,
第566行,输入
计划=切片计划(块[轴],索引)
文件“/usr/local/lib/python3.5/dist-packages/dask/array/slicing.py”,
第534行,在切片平面图中
如果区块>0:
ValueError:包含多个元素的数组的真值为
模棱两可的。使用a.any()或a.all()

但同样的代码在纯numpy中运行良好。问题在哪里?许多thx

您只需在给定数组上调用
argmin
fit
,并可选地计算以显示结果

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()
你也可以这样做:

fit.argmin().compute()


请记住,
fit
是一个大小为40的数组。也许你应该用语言来描述你正在努力实现的目标?也许大小应该是一个元组,如
(40,5)
或类似的东西?

考虑添加一些问题的回溯
import dask.array as da

da.argmin(fit).compute()
import numpy as np

np.argmin(fit).compute()