例如,尝试理解以下结果:
>>> x
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> (x == np.array([[1],[2]])).astype(np.float32)
array([[ 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],
[ 0., 0., 1., 0., 0., 0., 0., 0., 0., 0.]], dtype=float32)
>>> (x == np.array([1,2]))
False
>>> (x == np.array([[1]])).astype(np.float32)
array([[ 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.]], dtype=float32)
>>> (x == np.array([1])).astype(np.float32)
array([ 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)
>>> (x == np.array([[1,3],[2]]))
False
>>>
这里发生了什么?在[1]的情况下,它将1与x的每个元素进行比较,并将结果汇总到一个数组中。对于[[1]],同样的事情。仅通过对repl进行试验,就很容易弄清楚特定阵列形状会发生什么。但是,双方可以具有任意形状的基本规则是什么?
NumPy会在比较之前尝试将两个数组广播为兼容形状。如果广播失败,则当前返回False。将来,
==
如果广播或元素比较等失败,则相等运算符将来会引发类似np.equal的错误。
否则,将返回由逐元素比较产生的布尔数组。例如,由于x
和np.array([1])
是可广播的,因此返回形状(10,)的数组:
In [49]: np.broadcast(x, np.array([1])).shape
Out[49]: (10,)
由于x
和np.array([[1,3],[2]])
不可广播,False
由返回x == np.array([[1,3],[2]])
。
In [50]: np.broadcast(x, np.array([[1,3],[2]])).shape
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-50-56e4868cd7f7> in <module>()
----> 1 np.broadcast(x, np.array([[1,3],[2]])).shape
ValueError: shape mismatch: objects cannot be broadcast to a single shape
是否有一种惯用的方法来比较两个NumPy数组,它们将NaN视为彼此相等(但不等于NaN以外的任何东西)。 例如,我希望以下两个数组比较相等: 和以下两个数组进行比较: 我正在寻找一种可以产生标量布尔结果的方法。 以下方法可以做到这一点: 但它很笨重,并且创建了所有这些中间数组。 有没有一种方法可以更容易地观察眼睛,更好地利用记忆? 另外,如果有帮助的话,已知数组具有相同的形状和数据类型。
问题内容: 对于我的单元测试,我想检查两个数组是否相同。简化示例: 这是行不通的,因为。最好的进行方法是什么? 问题答案: 或者您可以使用或用: 编辑 由于您正在使用它进行单元测试,因此裸露(而不是将其包装成get )可能更自然。
我的问题是"为什么?:" 这些数组完全相同。 我的最小示例并没有再现这一点: 这个也没有: 我不知道为什么这些不平等。还有一个额外的问题,我如何比较它们? 我需要一种有效的方法来检查aaa是否在堆栈aa中。 我没有在aa中使用
比较两个NumPy数组是否相等的最简单方法是什么(其中相等定义为:A=B iff,用于所有索引i:
因此,我正在编写一个数独解算器,使用9x9数组作为网格,使用9x9x9数组作为其可能性。由于我使用的回溯算法,我必须检查数独是否仍然有效,又名: 如果有一个字段不包含数字,并且没有剩余的可能性,则返回False。到目前为止,我实现了以下几点: 例如,如果(j,i)处的正方形包含选项2、3和7,则相应的可能性数组为: 我试图在求解器中避免这样的循环。我尝试如下: 这返回了一个nx9数组,其中n是我的
假设我有一个对象类型MyObject,其中包含成员数据someValue和otherValue,我插入两个逻辑规则,如下所示: 我的问题是,有没有办法验证这些规则是否已针对同一个MyObject实例触发?另外,对于MyObject的一个特定实例,是否有办法知道这些规则是否已经触发了它?