Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中比较两个大型2D数组以获得精确的相等性?_Python_Python 3.x_Numpy - Fatal编程技术网

如何在Python中比较两个大型2D数组以获得精确的相等性?

如何在Python中比较两个大型2D数组以获得精确的相等性?,python,python-3.x,numpy,Python,Python 3.x,Numpy,如标题所述。我试图比较两个大的(21x21)网格,其中包含单点和单破折号的元素,看看每个索引中的每个元素是否相同。使用array1==array2会产生以下错误: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 然而,我并没有遇到对a.all/a.any语法的很好的解释。点之前是什么?他们带什么情人 编辑:我一直在避免使用NumPy,但是没有办法。NumPy是

如标题所述。我试图比较两个大的(21x21)网格,其中包含单点和单破折号的元素,看看每个索引中的每个元素是否相同。使用
array1==array2
会产生以下错误:

The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
然而,我并没有遇到对a.all/a.any语法的很好的解释。点之前是什么?他们带什么情人

编辑:我一直在避免使用NumPy,但是没有办法。NumPy是进口的。 有什么想法吗

我正在创建由点和虚线组成的默认网格的代码部分:

defaultgrid = [['.' for x in range(width)] for y in range(height)]

for x in range(1, 21, 2):
    defaultgrid[x] = [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ",
                      " ", " "]

for x in range(0, 21, 2):
    defaultgrid[x] = [".", " ", ".", " ", ".", " ", ".", " ", ".", " ", ".", " ", ".", " ", ".", " ", ".", " ", ".",
                      " ", "."]

比较数组的字符串怎么样


Str(arr1)=Str(arr2)

如果您确定要使用Numpy,则解决错误的方法
数组的真值…
如下所示:

  • 如果您有两个numpy数组
    arr1
    arr2
    ,则到处比较它们是否相等,不是通过
    If arr1==arr2:
    而是通过
    If np.array_equal(arr1,arr2):

  • 或者,如果您确定两个数组具有相同的大小(维度)和类型,则也可以像下面这样比较它们的相等性
    if np.all(arr1==arr2):

  • 如果不使用Numpy,则可以将两个嵌套列表进行比较,如果arr1==arr2:


  • 您是说您使用numpy只做
    np.copy()
    。要制作列表的深度副本,您可以使用standard(您必须导入副本)。

    这里有数百个关于该错误消息的问题。该错误来自numpy。如果你不被允许,为什么要使用它?只要使用嵌套列表,并且
    list1==list2
    应该做你想做的事情。就是这样,我甚至还没有导入numpy!我不明白我是怎么得到这个错误的,所以如果你使用numpy,那么你就不用比较
    如果arr1==arr2:
    如果np.all(arr1==arr2):或者如果np.array等于(arr1,arr2):,这真的不应该使用,它是超级的hackey@juanpa.arrivillaga对于该特定情况(''/'.'数组)这实际上是一个好主意workaround@KiJ不,绝对不是。您只需要
    (arr1==arr2).all()