<p>考虑一下这个代码</p>
<pre><code>>>> import numpy as np
>>> np.identity(5)
array([[ 1., 0., 0., 0., 0.],
[ 0., 1., 0., 0., 0.],
[ 0., 0., 1., 0., 0.],
[ 0., 0., 0., 1., 0.],
[ 0., 0., 0., 0., 1.]])
>>> np.identity(5)+np.ones([5,5])
array([[ 2., 1., 1., 1., 1.],
[ 1., 2., 1., 1., 1.],
[ 1., 1., 2., 1., 1.],
[ 1., 1., 1., 2., 1.],
[ 1., 1., 1., 1., 2.]])
>>> np.identity(5) == np.identity(5)+np.ones([5,5])
array([[False, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False]], dtype=bool)
>>>
</code></pre>
<p>注意比较的结果是一个矩阵,而不是一个布尔值。Dict比较将使用values<strong>cmp</strong>方法比较值,这意味着在比较矩阵值时,Dict比较将得到一个复合结果。你想做的是使用
<a href="http://docs.scipy.org/doc/numpy/reference/generated/numpy.all.html" rel="nofollow">numpy.all</a>将复合数组结果折叠为标量布尔结果</p>
^{2}$
<p>您需要编写自己的函数来比较这些字典,测试值类型以确定它们是否是矩阵,然后使用<code>numpy.all</code>进行比较,否则使用<code>==</code>。当然,如果你想的话,你也可以开始编写dict的子类化和重载<strong>cmp</strong>。在</p>