我可能遗漏了一些显而易见的东西,但我坚持这个:
在ipdb
会话中,我能够将问题减少到:
ipdb> type(scores)
<class 'numpy.matrixlib.defmatrix.matrix'>
ipdb> scores.shape
(23073, 50)
ipdb> scores[np.arange(scores.shape[0]), np.zeros(scores.shape[0], dtype=np.int)] += 10
*** ValueError: array is not broadcastable to correct shape
ipdb> scores.dtype
dtype('float64')
我无法用简单的例子重现这个问题:
In [24]: a = np.matrix(np.zeros((6,4))
)
In [25]: a[np.arange(a.shape[0]), np.zeros(a.shape[0], dtype=np.int)] += 10
In [26]: a
Out[26]:
matrix([[ 10., 0., 0., 0.],
[ 10., 0., 0., 0.],
[ 10., 0., 0., 0.],
[ 10., 0., 0., 0.],
[ 10., 0., 0., 0.],
[ 10., 0., 0., 0.]])
In [27]: a.dtype
Out[27]: dtype('float64')
任何想法可能会发生什么?我该怎么检查?
答案 0 :(得分:1)
好的,我明白了。在我的本地(简单示例)上我有numpy 1.9.0
而在远程(ipdb会话)我有numpy 1.8.1