2017-01-19 31 views
1

我试图计算两个数组的点积,像这样:NumPy的点积结果`IndexError:只有整数,切片...`

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 

我检查了ij的类型,他们肯定是整数,冒号肯定是切片。我还仔细检查了阵列的形状,上面的设置绝对是合法的。

self.ratingsself.v_ksi的类型都是<type 'numpy.ndarray'>

任何想法的?

谢谢!

+0

“self.ratings”和“self.v_ksi”的类型是什么? – Aaron

+0

@Aaron'numpy.ndarray'两个 – Taimur

+0

@据我可以告诉你的问题必须在其他地方,因为这是正确的..你可以用较小的完整测试脚本(你可以发布所有的)重现这个问题吗? – Aaron

回答

1

最有可能的错误实际上是从代码的这部分未来:

 self.theta['shape'][i, j] = \ 
     ^^^^^^^^^^^^^^^^^^^ 

错误消息只是混淆的指向上发生错误的逻辑行的最后一个物理线路。

也许你的意思是self.v_theta而不是self.theta

+0

现货 - 解决了它。傻我... 谢谢! – Taimur