numpy配列が2つ等しいかどうかをテストしたいので、np.allclose
関数を使用しています。唯一の問題は、2次元行列と等しい要素の3次元行列が与えられた場合、True
を返します。2つの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)
戻り
私はそれがこのケースで(x,z1)
ため(x,y)
と(z1,z2)
が、偽のためにtrueを返します使用することができる機能がありますFalse
?
もう1つのチェックを追加することはどうでしょうか? '(x.shape == z1.shape)&np.allclose(x、z1)'? – Divakar