442 Stimmen

Vergleich zweier NumPy-Arrays auf Gleichheit, elementweise

Was ist der einfachste Weg, um zwei NumPy-Arrays auf Gleichheit zu vergleichen (wobei Gleichheit definiert ist als: A = B iff für alle Indizes i: A[i] == B[i] )?

Einfach mit == gibt mir ein boolesches Array:

 >>> numpy.array([1,1,1]) == numpy.array([1,1,1])

array([ True,  True,  True], dtype=bool)

Muss ich die and die Elemente dieses Arrays, um festzustellen, ob die Arrays gleich sind, oder gibt es einen einfacheren Weg, um zu vergleichen?

5voto

keramat Punkte 4120

Verwenden Sie nun np.array_equal . Aus der Dokumentation:

np.array_equal([1, 2], [1, 2])
True
np.array_equal(np.array([1, 2]), np.array([1, 2]))
True
np.array_equal([1, 2], [1, 2, 3])
False
np.array_equal([1, 2], [1, 4])
False

2voto

Sylvain Punkte 639

Zusätzlich zu den anderen Antworten können Sie nun eine Behauptung verwenden:

numpy.testing.assert_array_equal(x, y)

Sie haben auch ähnliche Funktionen wie numpy.testing.assert_almost_equal()

https://numpy.org/doc/stable/reference/generated/numpy.testing.assert_array_equal.html

0voto

rubengavidia0x Punkte 283

Nur der Vollständigkeit halber. Ich werde den pandas-Ansatz für den Vergleich zweier Arrays:

import numpy as np
a = np.arange(0.0, 10.2, 0.12)
b = np.arange(0.0, 10.2, 0.12)
ap = pd.DataFrame(a)
bp = pd.DataFrame(b)

ap.equals(bp)
True

FYI: Falls Sie auf der Suche sind nach How to Vektoren, Arrays oder Dataframes in R vergleichen. Sie können nur Sie verwenden:

identical(iris1, iris2)
#[1] TRUE
all.equal(array1, array2)
#> [1] TRUE

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X