当前位置: 首页 > 面试题库 >

如何检查numpy矩阵的列中的所有值是否相同?

洪俊拔
2023-03-14
问题内容

我想检查numpy数组/矩阵的列中的所有值是否相同。我试图用reduce的的ufunc
equal,但它似乎不是在所有情况下工作时:

In [55]: a = np.array([[1,1,0],[1,-1,0],[1,0,0],[1,1,0]])

In [56]: a
Out[56]: 
array([[ 1,  1,  0],
       [ 1, -1,  0],
       [ 1,  0,  0],
       [ 1,  1,  0]])

In [57]: np.equal.reduce(a)
Out[57]: array([ True, False,  True], dtype=bool)

In [58]: a = np.array([[1,1,0],[1,0,0],[1,0,0],[1,1,0]])

In [59]: a
Out[59]: 
array([[1, 1, 0],
       [1, 0, 0],
       [1, 0, 0],
       [1, 1, 0]])

In [60]: np.equal.reduce(a)
Out[60]: array([ True,  True,  True], dtype=bool)

为什么在第二种情况下中间的列也求和True,而应该是False

谢谢你的帮助!


问题答案:
In [45]: a
Out[45]: 
array([[1, 1, 0],
       [1, 0, 0],
       [1, 0, 0],
       [1, 1, 0]])

将每个值与第一行中的相应值进行比较:

In [46]: a == a[0,:]
Out[46]: 
array([[ True,  True,  True],
       [ True, False,  True],
       [ True, False,  True],
       [ True,  True,  True]], dtype=bool)

如果该列中的所有值均为True,则该列共享一个公共值:

In [47]: np.all(a == a[0,:], axis = 0)
Out[47]: array([ True, False,  True], dtype=bool)

np.equal.reduce可以通过微观分析将其应用于以下情况时可以看到的问题[1, 0, 0, 1]

In [49]: np.equal.reduce([1, 0, 0, 1])
Out[50]: True

前两项,10经过相等性测试,结果为False

In [51]: np.equal.reduce([False, 0, 1])
Out[51]: True

现在False0经过测试是否相等,结果为True

In [52]: np.equal.reduce([True, 1])
Out[52]: True

但是True和相等,因此总结果为True,这不是期望的结果。

问题是,reduce我们希望像那样进行“全局”测试时,试图“本地”累积结果np.all



 类似资料:
  • 假设我有一组数组,包括和,我想检查它们是否相等。一般来说,我可以只使用(除了一些我现在忽略的愚蠢的情况)。 但是,这会计算的整个数组,这通常是不需要的。我的数组非常大,而且我有很多数组,两个数组相等的概率很小,所以很可能,在函数返回False之前,我只需要计算的一小部分,所以这对我来说不是一个最佳解决方案。 我尝试使用内置的函数,并结合: 然而,在两个数组相等的情况下,这似乎要慢得多,总的来说,它

  • 我使用if-else检查numpy矩阵的索引i,i处的元素是否为0 得到了错误值错误:数组的真值有多个元素是含糊不清的。使用a.any()或a.all()对此有任何解决办法吗?

  • 我有一个带有shape的numpy数组,第二个数组也带有shape。我不知道如何检查它们是否相同?示例: 1.第一: 第二: 回应:真实 2. 第一: 第二: 答复:错

  • 我有一个矩阵,我想和另外两个矩阵进行比较,看看我矩阵中的每个条目是包含在另外两个矩阵的值之内还是之外。例如,如果我的矩阵是: 另外两个矩阵是L和U: 和 我想取M的每个条目,比较一下它是否包含在L和U对应条目的范围内。 例如,对于M[1,1],它在-0.49416022和-0.84996737的范围之外,所以我将给这个比较赋值0。另一方面,对于M[2,3],值是-0.5240536,因此在1.14

  • 问题内容: 我需要以下功能: 输入: 输出: 如果输入列表中的所有元素使用标准相等运算符求值彼此相等; 除此以外。 性能:当然,我不希望产生任何不必要的开销。 我觉得最好: 遍历列表 比较相邻元素 和AND所有结果布尔值 但我不确定最Pythonic的方法是什么。 问题答案: 通用方法: 单线: 也是单线的: 这三个版本之间的区别在于: 在内容中必须是可哈希的。 并且可以使用任何迭代器,但chec

  • 我在为Android平台做一个简单的游戏。我有25个对象由我称之为Circle的类制成。每个Circle对象都有一个字段,该字段包含一个int数字,表示 null