Я хочу проверить, если два массива numpy (близкие к) равны, поэтому я использовал функцию np.allclose
. Единственная проблема заключается в том, что она возвращает True
, если задана двумерная матрица и трехмерная матрица равных элементов.Протестируйте, если два массива numpy (близкие к) равны, включая форму
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.
Теперь я знаю о np.array_equal
, который сравнивает элементы и формы, но он не позволяет мне, чтобы проверить, если элементы близки, только если они равны. Так, например,
np.array_equal(x,y)
Возвращает False
Есть ли функция, которую я могу использовать, что возвращает истину для (x,y)
и (z1,z2)
, но неверно для (x,z1)
в этом случае?
Как насчет добавления еще одной проверки - '(x.shape == z1.shape) & np.allclose (x, z1)'? – Divakar