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

2024-09-30 12:29:27 发布

您现在位置:Python中文网/ 问答频道 /正文

如标题所述。我试图比较两个大的(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] = [".", " ", ".", " ", ".", " ", ".", " ", ".", " ", ".", " ", ".", " ", ".", " ", ".", " ", ".",
                      " ", "."]

Tags: innumpy网格元素标题for错误any
2条回答

如果您确定要使用Numpy,那么解决错误The truth value of an array.....的方法如下:

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

  2. 或者,如果您确定两个数组具有相同的大小(维度)和类型,那么您也可以像下面这样比较它们是否相等

  3. 如果不使用Numpy,那么可以将两个嵌套列表作为if arr1 == arr2:进行比较

你是说你用numpy只做np.copy()。要制作列表的深度副本,可以使用标准copy.deepcopy()(必须import copy

比较数组的字符串怎么样

Str(arr1)=Str(arr2)

相关问题 更多 >

    热门问题