Python 整数除法误差

Python 整数除法误差,python,numpy,Python,Numpy,我得到的Numpy操作数无法与shape(200,1,25,25)(200,1)一起广播错误由两个具有以下维度的数组除以 a=numpy.ones((200,1,25,25)) b=numpy.ones((200,1)) c=a/b 但我可以通过以下维度得到正确的结果 a=numpy.ones((4,1,4,4)) b=numpy.ones((4,1)) c=a/b 我怎样才能纠正这个错误。我的numpy版本是1.6.1。Python的版本是2.7。第二个示例并没有达到您认为的效果。Nump

我得到的
Numpy操作数无法与shape(200,1,25,25)(200,1)一起广播
错误由两个具有以下维度的数组除以

a=numpy.ones((200,1,25,25))
b=numpy.ones((200,1))
c=a/b
但我可以通过以下维度得到正确的结果

a=numpy.ones((4,1,4,4))
b=numpy.ones((4,1))
c=a/b

我怎样才能纠正这个错误。我的numpy版本是1.6.1。Python的版本是2.7。

第二个示例并没有达到您认为的效果。Numpy匹配从右侧开始播放的轴
(25,25)
与第一个示例中的
(200,1)
匹配并且无法广播,但是
(4,4)
(4,1)
匹配并且广播成功

把一个shape-
(200,1,25,25)
数组想象成一个由25×25数组组成的200×1数组。如果将其除以25×25数组,则numpy会将左操作数的每个25×25子数组除以右操作数。另一方面,尝试使用200乘1的除数是没有意义的。这并不是对广播规则的完整描述——如果这就是一切,第二个例子就不会运行了——但它应该足以开始建立一个关于事物如何运作的直觉

您可能希望反转轴的顺序:

a = numpy.ones((25, 25, 1, 200))
b = numpy.ones((1, 200))

阅读有关广播语义的文章可能也会有所帮助。

您忘了问一个问题。我的问题是如何修复错误