我正在尝试计算两个数组的点积:
for i in range(self.v_theta['shape'].shape[0] - 1):
for j in range(self.v_theta['shape'].shape[1] - 1):
self.theta['shape'][i, j] = \
self.ratings[:, i].dot(self.v_ksi[:, i, j])
但是我收到以下错误:
self.ratings[:, i].dot(self.v_ksi[:, i, j])
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
我已经检查了i
和j
的类型,它们肯定是整数,冒号肯定是切片。我还仔细检查了阵列的形状,上面的设置绝对是点积的合法。
self.ratings
和self.v_ksi
都属于<type 'numpy.ndarray'>
有什么想法吗?
谢谢!
答案 0 :(得分:1)
最有可能的是,错误实际上来自代码的这一部分:
self.theta['shape'][i, j] = \
^^^^^^^^^^^^^^^^^^^
错误消息只是容易混淆地指向发生错误的逻辑行的最后一条物理线。
也许您的意思是self.v_theta
而不是self.theta
。