当前位置: 首页 > 知识库问答 >
问题:

比较Numpy阵列

松和泰
2023-03-14

因此,我有两个大小相等的2D numpy数组,都是在两个不同的曲面上使用pygame.surfarray.array3d方法获得的。

数组中的每个值也是[a, b, c]形式的数组(所以我基本上有一个带有1D元素的2D数组)。

基本上,我想根据条件对两者进行比较:

if any(val1 != val2) and all(val1 != [0, 0, 0]):
# can't be equal and val1 cant be [0, 0, 0] 

有没有更有效的方法可以做到这一点,而无需简单地迭代任何一个数组,如下所示?

for y in range(len(array1)):
    for x in range(len(array1[y])):
        val1 = array1[y,x]; val2 = array[y,x]
        if any(val1 != val2) and all(val1 != [0, 0, 0]):
            # do something

共有1个答案

潘安平
2023-03-14
import numpy as np
if np.any(array1 != array2) and not np.any(np.all(a == 0, axis=-1))

np.any(array1!=array2)正在比较“大”3D数组的每个元素。然而,这相当于将每个xyval1val2进行比较。

另一个条件,np.any(np.all(a==0,axis=-1))稍微复杂一点。最里面的np.all(a==0,轴=-1)创建一个布尔值的二维数组。每个值都设置为TrueFalse,具体取决于最后一个维度中的所有值是否为0。外部条件检查2D数组中的任何值是否为True,这意味着array1[y,x]中有一个元素等于[0,0,0]

 类似资料:
  • 是否有一种惯用的方法来比较两个NumPy数组,它们将NaN视为彼此相等(但不等于NaN以外的任何东西)。 例如,我希望以下两个数组比较相等: 和以下两个数组进行比较: 我正在寻找一种可以产生标量布尔结果的方法。 以下方法可以做到这一点: 但它很笨重,并且创建了所有这些中间数组。 有没有一种方法可以更容易地观察眼睛,更好地利用记忆? 另外,如果有帮助的话,已知数组具有相同的形状和数据类型。

  • 主要内容:创建数组,布尔索引,重塑数组形状,Pdans与NumPy区别,转换ndarray数组我们知道 Pandas 是在 NumPy 的基础构建而来,因此,熟悉 NumPy 可以更加有效的帮助我们使用 Pandas。 NumPy 主要用 C语言编写,因此,在计算还和处理一维或多维数组方面,它要比 Python 数组快得多。关于 NumPy 的学习,可以参考《 Python NumPy教程》。 创建数组 数组的主要作用是在一个变量中存储多个值。NumPy 可以轻松地处理多维数组,示例如下:

  • 第一次来这里,所以我希望这是有意义的! 我有两个对象数组,比如l1和l2,我想在这两个列表之间进行比较,并在l3中得到一个不匹配的值。用户类包含2个字符串: 比如,l1包含:Java、JSF、JAXR、foo l2包含:JSF、JAXR 我可以对匹配的值进行比较,但不能对不匹配的值进行比较。这种逻辑似乎有缺陷。有什么帮助吗? 对于匹配值: 但是,对于不匹配,当我说不等于时,我得到的不是唯一的值,而

  • 我一直认为numpy数组比list更紧凑,占用的内存更少,但是,对于三维float64 np数组, 输出是,, 列表占用的内存要小得多。使用?如果是,我能做些什么来提高np数组内存使用率吗? ###################### 使用pympler@J_H(pympler似乎不能处理列表中的数组,比如list(一个3-D数组) 谢谢大家!!

  • 问题内容: 对于我的单元测试,我想检查两个数组是否相同。简化示例: 这是行不通的,因为。最好的进行方法是什么? 问题答案: 或者您可以使用或用: 编辑 由于您正在使用它进行单元测试,因此裸露(而不是将其包装成get )可能更自然。

  • 我的问题是"为什么?:" 这些数组完全相同。 我的最小示例并没有再现这一点: 这个也没有: 我不知道为什么这些不平等。还有一个额外的问题,我如何比较它们? 我需要一种有效的方法来检查aaa是否在堆栈aa中。 我没有在aa中使用