2つの配列が同じshape
とelements
を持っているかどうかを確認するには、np.array_equal
をドキュメントで推奨されている方法で使用する必要があります。
comparing two elements
を最適化する余地があまりないため、パフォーマンスの観点から、同等性のチェックが別のものを打つことは期待できません。ちょうど、私はまだいくつかのテストをしました。
import numpy as np
import timeit
A = np.zeros((300, 300, 3))
B = np.zeros((300, 300, 3))
C = np.ones((300, 300, 3))
timeit.timeit(stmt='(A==B).all()', setup='from __main__ import A, B', number=10**5)
timeit.timeit(stmt='np.array_equal(A, B)', setup='from __main__ import A, B, np', number=10**5)
timeit.timeit(stmt='np.array_equiv(A, B)', setup='from __main__ import A, B, np', number=10**5)
> 51.5094
> 52.555
> 52.761
ので、かなり等しい、スピードについて話をする必要はありません。
x = [1,2,3]
y = [1,2,3]
print all([True if x[i]==y[i] else False for i in range(len(x))])
> True
あなたはほとんど常に 'np.array_equal' IMEをしたい:
(A==B).all()
は、次のコードスニペットとしてはかなり動作します。 '(A == B).all()'は、AとBの長さが違うとクラッシュします**。 1.10の時点で、[===この例では推奨されていません](https://github.com/numpy/numpy/commit/6bf0e419dc79ea6815557c57b7e9bb504ba20543)。 –あなたは良い点を持っていますが、IMEは通常、手前のAとBの形を知っています。私はそれが文脈に依存していると思うし、私が推測する味。 –