Jak porównać dwie tablice numpy: z przykładami
Do porównania wartości dwóch tablic NumPy możesz użyć następujących metod:
Metoda 1: Sprawdź, czy dwie tablice NumPy są równe na poziomie elementu
#test if array A and array B are element-wise equal n.p. array_equal (A,B)
Metoda 2: Sprawdź, czy dwie tablice NumPy są równe na poziomie elementu (w ramach tolerancji)
#test if array A and array B are element-wise equal (within absolute tolerance of 2) n.p. allclose (A, B, atol= 2 )
Poniższe przykłady pokazują, jak zastosować każdą metodę w praktyce.
Przykład 1: Sprawdź, czy dwie tablice NumPy są równe na poziomie elementu
Poniższy kod pokazuje, jak używać funkcji array_equal() do sprawdzania, czy dwie tablice NumPy są równe na poziomie elementu:
import numpy as np #create two NumPy arrays A = np. array ([1, 4, 5, 7, 10]) B = np. array ([1, 4, 5, 7, 10]) #test if arrays are element-wise equal n.p. array_equal (A,B) True
Funkcja zwraca True , ponieważ obie tablice NumPy mają tę samą długość i te same wartości w tych samych pozycjach.
Jednakże funkcja zwróci False jeśli dwie tablice NumPy mają te same wartości, ale na różnych pozycjach:
import numpy as np #create two NumPy arrays with same values but in different positions A = np. array ([1, 4, 5, 7, 10]) B = np. array ([1, 4, 7, 5, 10]) #test if arrays are element-wise equal n.p. array_equal (A,B) False
Przykład 2: Sprawdź, czy dwie tablice NumPy są równe na poziomie elementu (w granicach tolerancji)
Poniższy kod pokazuje, jak używać funkcji allclose() do sprawdzania, czy dwie tablice NumPy są równe na poziomie elementu w zakresie wartości tolerancji wynoszącej 2 :
import numpy as np #create two NumPy arrays A = np. array ([1, 4, 5, 7, 10]) B = np. array ([1, 4, 7, 8, 10]) #test if arrays are element-wise equal (within absolute tolerance of 2) n.p. allclose (A, B, atol= 2 ) True
Funkcja zwraca True , ponieważ pasujące elementy pomiędzy każdą tablicą NumPy znajdują się w odległości nie większej niż 2 od siebie.
Na przykład widzimy, że elementy na trzeciej i czwartej pozycji każdej tablicy są różne, ale ponieważ każda para jest oddzielona o 2 wartości, funkcja zwraca wartość true.
Jeśli jednak zmienimy argument tolerancji bezwzględnej (atol) na 1 , wówczas funkcja zwróci False :
import numpy as np #create two NumPy arrays A = np. array ([1, 4, 5, 7, 10]) B = np. array ([1, 4, 7, 8, 10]) #test if arrays are element-wise equal (within absolute tolerance of 1) n.p. allclose (A, B, atol= 1 ) False
Funkcja zwraca False , ponieważ odpowiednie elementy na trzeciej pozycji każdej tablicy NumPy nie są od siebie oddalone o 1.
Uwaga : pełne wyjaśnienie funkcji array_equal i allclose znajdziesz w dokumentacji NumPy.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w NumPy:
Jak przenosić elementy w tablicy NumPy
Jak policzyć wystąpienia elementów w NumPy
Jak obliczyć tryb tablicy NumPy