как вернуть минимальный индекс этого массива? - PullRequest
0 голосов
/ 18 сентября 2018
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()

но тот же код хорошо работает в чистом виде. В чем проблема ? многие спасибо

1 Ответ

0 голосов
/ 18 сентября 2018

Вы просто вызываете 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) или чем-то еще?

...