因此,在这个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] 是在另一个函数中预先定义的
答案 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),:])