SORU
14 Mayıs 2012, PAZARTESİ


Eşitlik için iki numpy diziler karşılaştırılması, element-wise

Eşitlik (eşitlik olarak tanımlanır: = B tüm dizinler için ıff ben:* *3) iki numpy dizi karşılaştırmak için en kolay yolu nedir?

== kullanarak beni boolean bir dizi verir sadece:

 >>> numpy.array([1,1,1]) == numpy.array([1,1,1])

array([ True,  True,  True], dtype=bool)

and bu dizinin öğeleri diziler eşittir, ya da orada karşılaştırmak için daha basit bir yol olup olmadığını belirlemek için gerekiyor?

CEVAP
14 Mayıs 2012, PAZARTESİ


(A==B).all()

dizinin tüm değerleri (A==B) eğer test Doğruysa.

Edit(dbaupp cevabı ve yoavram yorum)

Unutulmamalıdır:

  • belirli bir durumda garip bir davranış olabilir bu çözüm: ya A B boş, diğeri tek bir elemanı varsa, o zaman True dönüş. Nedense, karşılaştırma A==B all operatör True boş bir dizi döndürür, döndürür.
  • Bir başka risk A B aynı şekli yok ve broadcastable değilse, o zaman bu yaklaşım bir hata oluşturacaktır.

Sonuç olarak, çözüm önerdim standart bir, sanırım, ama eğer bir şüphe A B şekil ya da sadece olmak istiyorum güvenli kullanın: birinin özel fonksiyonları:

np.array_equal(A,B)  # test if same shape, same elements values
np.array_equiv(A,B)  # test if broadcastable shape, same elements values
np.allclose(A,B,...) # test if same shape, elements have close enough values

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • jpmkm1

    jpmkm1

    4 NİSAN 2008
  • Juan Carlos Candela Bordera

    Juan Carlos

    4 Mart 2009
  • Sam Kear

    Sam Kear

    14 Temmuz 2007