Chcę przetestować, czy dwie wyskakujące tablice są (zbliżone do) równe, więc korzystam z funkcji np.allclose
. Jedyny problem polega na tym, że zwraca on True
, jeśli otrzyma dwuwymiarową macierz i trójwymiarową macierz równych elementów.Sprawdź, czy dwie niezliczone tablice są (zbliżone do) sobie równe, w tym kształt
import numpy as np
x = np.array([[3.14159265, -0.1], [-0.1, 0.1]])
y = np.array([[math.pi, -0.1], [-0.1, 0.1]])
z1 = np.array([[[3.14159265, -0.1], [-0.1, 0.1]],
[[3.14159265, -0.1], [-0.1, 0.1]]])
z2 = np.array([[[math.pi, -0.1], [-0.1, 0.1]],
[[math.pi, -0.1], [-0.1, 0.1]]])
np.allclose(x,y)
# Returns true, as expected
np.allclose(x,z1)
# Also returns true, even though matrices are different shapes. Unwanted.
Teraz wiem o np.array_equal
, który porównuje elementy i kształt, ale nie pozwala mi sprawdzić, czy elementy są blisko, tylko jeśli są one równe. Na przykład,
np.array_equal(x,y)
Zwraca False
Czy istnieje funkcja mogę używać że zwróci true dla (x,y)
i (z1,z2)
ale fałszywy dla (x,z1)
w tym przypadku?
Co powiecie na dodanie jeszcze jednego czeku - '(x.shape == z1.shape) & np.allclose (x, z1)'? – Divakar