builtins.ValueError:具有多个元素的数组的真值是不明确的。使用a.any()或a.all()

时间:2018-12-05 01:09:48

标签: python numpy int boolean

因此,在这个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 :(得分:1)

这是由您在max对象上使用内置的np.ndarray引起的,它隐式调用数组元素的比较,在这种情况下,为您提供“行”的numpy数组,因此出现错误。对.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),:])