2016-07-21 28 views
11

İki dizinin eşit olduğunu iddia etmek için numpy.testing.assert_array_equal var.numpy testing komut dizisi eşit DEĞİL

numpy.testing.assert_array_not_equal yapmanın en iyi yolu nedir? Yani, iki dizinin eşit OLMADIĞINDAN emin olmak için? Sanmıyorum

+0

Diziler ne kadar eşitsiz? Her elementte mi yoksa en azından birinde mi farklı olmalılar? –

+0

En az bir öğe eşit olmamalıdır. Yani, iki dizinin içeriği aynı olmayabilir. Bir öğe farklıysa, her şey yolunda. –

+1

O zaman Eswcvlad'ın cevabı muhtemelen bulacağınız en zarif hack. –

cevap

10

, o zaman ters sonuç için numpy.testing.assert_raises birlikte numpy.testing.assert_array_equal kullanabilirsiniz. Örneğin:

assert_raises(AssertionError, assert_array_equal, array_1, array_2) 

Ayrıca (o numpy.testing.assert_array_equal tarafından kullanılır) numpy.testing.utils.assert_array_compare yoktur, ama her yerde belgelenen göreceğinden, dikkatli kullanmayın. Bu seferki her eleman farklı olup olmadığını kontrol edecektir, bu yüzden bu Kullanım durumunuz değil sanırım:

import operator 

assert_array_compare(operator.__ne__, array_1, array_2) 
+1

İlk yöntem için düzgün kesmek. İkincisi, sadece her elemanın değil, her elemanın söyleyebildiğim kadar farklı olması durumunda başarılı olacaktır. OP'nin istediği şeyin bu olduğundan emin değilim. Her iki durumda +1. –

+0

Evet, ikinciden haklısınız. Cevabı düzenleyecektir. – Eswcvlad

+0

İlki benim için yapar! Teşekkürler! –

4

NumPy test çerçevesi içine doğrudan inşa şey olduğunu ama sadece kullanabilirsiniz:

np.any(np.not_equal(a1,a2)) 

ve unittest çerçevesi yerleşik veya True örn için assert_equal olarak numpy ile kontrol ile gerçek iddia Özellikle NumPy test kullanmak istiyorsanız

np.testing.assert_equal(np.any(np.not_equal(a,a)), True) 
+0

Testinizin anlamı ters çevrildi. OP eşit olmayan dizilerin geçmesini istiyor. –

+0

Yup - testi tersine çevirdi. Tespit ettiğin için teşekkürler. @MadPhysicist – Mark

+0

Muhtemelen sadece 'TestCase.assertTrue' (np.any (…)) 'yerine kullanmalısınız (ya da 'TestCase' dışında iseniz 'nose.cools.assert_true (np.any (…)). –

1

bu gönderilmemiş olması neden, düzgün soru anlamadı olabilir ama emin ne hakkında:

assert not np.array_equal(array1 , array2) 

Sadece numpy test modülünde tutmak istediğiniz nedenlerden biri?