如何返回这个数组的最小索引?

2024-04-27 00:06:43 发布

您现在位置:Python中文网/ 问答频道 /正文

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)

结果应该是一个shape(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中也能很好地工作。问题出在哪里?许多泰铢


Tags: inpyindexlibpackagesusrlocaldist
1条回答
网友
1楼 · 发布于 2024-04-27 00:06:43

只需对给定数组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)或者其他类似的东西?你知道吗

相关问题 更多 >