簡體   English   中英

如何比較 Python 中的兩個大型 2D arrays 是否完全相等?

[英]How do I compare two large 2D arrays in Python for exact equality?

如標題所述。 我正在嘗試比較兩個包含單點和單破折號元素的大型(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] = [".", " ", ".", " ", ".", " ", ".", " ", ".", " ", ".", " ", ".", " ", ".", " ", ".", " ", ".",
                      " ", "."]

比較 arrays 的字符串怎么樣?

str(arr1) == str(arr2)

如果您確定要使用 Numpy 那么解決錯誤的方法The truth value of an array.....如下:

  1. 如果你有兩個 numpy arrays arr1arr2然后到處比較它們是否相等,而不是通過if arr1 == arr2:而是通過if np.array_equal(arr1, arr2):

  2. 或者,如果您確定您的兩個 arrays 具有相同的大小(維度)和類型,那么您也可以像這樣比較它們是否相等if np.all(arr1 == arr2):

  3. 如果您不使用 Numpy ,則可以像if arr1 == arr2:一樣比較兩個嵌套列表。

你說你使用 numpy 只是為了做np.copy() 要制作列表的深層副本,您可以使用標准copy.deepcopy() (您必須import copy )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM