如何在Python中比较两个大型2D数组以获得精确的相等性?
如标题所述。我试图比较两个大的(21x21)网格,其中包含单点和单破折号的元素,看看每个索引中的每个元素是否相同。使用如何在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是
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,则解决错误的方法
数组的真值…
如下所示:
arr1
和arr2
,则到处比较它们是否相等,不是通过If arr1==arr2:
而是通过If np.array_equal(arr1,arr2):
if np.all(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()