builtins.ValueError: Значение истинности массива с более чем одним элементом является неоднозначным.Используйте a.any () или a.all () - PullRequest
0 голосов
/ 05 декабря 2018

Итак, в конце этого проекта AI я получаю эту ошибку, которая, по-моему, numpy связана.

trace[2] = np.nonzero(np.random.multinomial( 8, self.P[x,a,:]))[0][0]

def traces2Q(self, trace):
    for tr_line in trace:
        s=int(tr_line[0])
        a=int(tr_line[1])
        self.Q[s][a] = self.Q[s][a] + tr_line[3] + self.gamma*max(self.Q[trace[2].astype(int),:]) - self.Q[s][a]

Как видите, я пытался преобразоватьмассив trace [2] для типа int, который получил мне это сообщение об ошибке.Сообщение об ошибке приходит от max (self.Q [trace [2] .astype (int),:]) , где trace [2] заранее определено в другой функции.

1 Ответ

0 голосов
/ 05 декабря 2018

Это происходит из-за того, что вы используете встроенный max для объекта np.ndarray, он неявно вызывает сравнения элементов массива, в данном случае, давая вам «строки» из пустых массивов, отсюда и ошибка,Используйте встроенный метод .max для numpy.ndarray объектов или используйте numpy.max вместо встроенного max

. Поэтому измените:

self.gamma*max(self.Q[trace[2].astype(int),:])

На:

self.gamma*np.max(self.Q[trace[2].astype(int),:])
...