2016-05-17 11 views
1

numpy配列のリストがあり、すべての配列が等しいかどうかをチェックしたいのですが。これを行う最も簡単な方法は何ですか?numpy配列のリストが等しいかどうか確認してください。

私はnumpy.array_equal関数(https://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.array_equal.html)を認識していますが、これは2つの配列にしか当てはまりませんので、N個の配列をお互いにチェックしたいと思います。

またリストのすべての要素をテストするためにこの回答が見つかりました:check if all elements in a list are identical。 しかし、私が受け入れられた答えで各メソッドを試してみると、ValueError:複数の要素を持つ配列の真理値が曖昧であるa.any()またはa.all()を使用する

ご使用のアレイ比較

def all_equal(iterator): 
    try: 
    iterator = iter(iterator) 
    first = next(iterator) 
    return all(np.array_equal(first, rest) for rest in iterator) 
    except StopIteration: 
    return True 

のおかげで、

+1

は、あなたの配列整数または浮動小数点ていますか?その 'ValueError'にはたくさんの質問があります。それらのうちのいくつかを見てください。 – hpaulj

答えて

2

あなたは可能性があり、単純にadapt a general iterator methodこれが動作しない場合、それはあなたの配列はない等しいことを意味します。

デモ

>>> i = [np.array([1,2,3]),np.array([1,2,3]),np.array([1,2,3])] 
>>> print(all_equal(i)) 
True 
>>> j = [np.array([1,2,4]),np.array([1,2,3]),np.array([1,2,3])] 
>>> print(all_equal(j)) 
False 
0

あなたの配列が同じサイズのものである場合には、numpy_indexed(免責事項:私はその作者午前)を使用して、このソリューションに動作し、非常に効率的でなければなりません:

import numpy_indexed as npi 
npi.all_unique(list_of_arrays) 
関連する問題