ValueError:数组不能广播以修正形状

时间:2015-03-11 16:05:43

标签: python numpy

我可能遗漏了一些显而易见的东西,但我坚持这个:

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')

任何想法可能会发生什么?我该怎么检查?

1 个答案:

答案 0 :(得分:1)

好的,我明白了。在我的本地(简单示例)上我有numpy 1.9.0而在远程(ipdb会话)我有numpy 1.8.1