Ich möchte überprüfen , ob meine , query
die vom Typ ist list
in der ist database
(a list
von lists
). Im folgenden Beispiel ist es.
query = [np.array([[4,3],[6,4]]),5,2,1,5]
database = [ [np.array([[8,5],[2,1]]),5,3,1,9],
[np.array([[4,3],[6,4]]),5,2,1,5],
[np.array([[7,2],[6,4]]),0,0,8,5]]
Ich habe das versucht:
np.any([(query==data) for data in database])
Ich erhalte jedoch den folgenden Fehler:
ValueError: The truth value of an array with more than one element is ambiguous.
Use a.any() or a.all()
Da np.array_equal
Arrays oder Skalare akzeptiert werden können, können Sie es folgendermaßen verwenden:
In [107]: any(all(np.array_equal(datum, q) for datum, q in zip(data, query)) for data in database)
Out[107]: True
Wenn es sich bei Ihren Skalaren um Floats handelt, möchten Sie möglicherweise np.allclose
stattdessen verwenden, np.array_equal
da das Testen der exakten Float-Gleichheit häufig nicht wünschenswert ist:
In [108]: np.array_equal(0.1+0.2, 0.3)
Out[108]: False
In [109]: np.allclose(0.1+0.2, 0.3)
Out[109]: True
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen