2016-07-21 17 views
11

Chúng tôi có numpy.testing.assert_array_equal để khẳng định rằng hai mảng đều bằng nhau.thử nghiệm xác nhận khối u không được bằng

Nhưng cách tốt nhất để làm numpy.testing.assert_array_not_equal, tức là, để đảm bảo rằng hai mảng KHÔNG bằng nhau?

+0

Mức độ bất bình đẳng là gì? Phải chăng chúng khác nhau trong mọi phần tử, hoặc ít nhất là trong một phần tử? –

+0

Ít nhất một phần tử phải không bằng nhau. Nghĩa là, nội dung của hai mảng có thể không giống nhau. Nếu một yếu tố khác nhau, mọi thứ đều ổn. –

+1

Sau đó, câu trả lời của @ Eswcvlad có lẽ là hack thanh lịch nhất mà bạn sẽ tìm thấy. –

Trả lời

10

Nếu bạn muốn sử dụng thử nghiệm đặc biệt NumPy, sau đó bạn có thể sử dụng cùng với numpy.testing.assert_array_equalnumpy.testing.assert_raises cho kết quả ngược lại. Ví dụ:

assert_raises(AssertionError, assert_array_equal, array_1, array_2) 

Cũng có numpy.testing.utils.assert_array_compare (nó được sử dụng bởi numpy.testing.assert_array_equal), nhưng tôi không nhìn thấy nó ghi lại bất cứ nơi nào, vì vậy sử dụng một cách thận trọng. Cái này sẽ kiểm tra xem mọi phần tử là khác nhau, vì vậy tôi đoán đây không phải là trường hợp sử dụng của bạn:

import operator 

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

Neat hack cho phương pháp đầu tiên. Thứ hai sẽ chỉ thành công nếu mọi yếu tố, không chỉ một số, là khác nhau như xa như tôi có thể nói. Không chắc chắn nếu đó là những gì OP muốn. +1 một trong hai cách. –

+0

Có, bạn nói đúng về điều thứ hai. Sẽ chỉnh sửa câu trả lời. – Eswcvlad

+0

Người đầu tiên làm điều đó cho tôi! Cảm ơn! –

4

Tôi không nghĩ rằng có điều gì được xây dựng trực tiếp vào khuôn khổ kiểm tra NumPy nhưng bạn chỉ có thể sử dụng:

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

và khẳng định đúng với việc xây dựng trong khuôn khổ unittest hoặc kiểm tra với NumPy như assert_equal-True ví dụ

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

Cảm giác kiểm tra của bạn bị đảo lộn. OP muốn mảng không bằng nhau để vượt qua. –

+0

Yup - chỉ cần lật thử nghiệm theo cách khác. Cảm ơn vì đã phát hiện. @MadPhysicist – Mark

+0

Có lẽ bạn chỉ nên sử dụng 'TestCase.assertTrue (np.any (…))' thay vì (hoặc 'nose.tools.assert_true (np.any (…))' nếu bạn ở bên ngoài 'TestCase'). –

1

Không chắc tại sao điều này vẫn chưa được đăng tải, có thể tôi không hiểu những câu hỏi đúng, nhưng những gì về:

assert not np.array_equal(array1 , array2) 

Bất kỳ lý do nào bạn muốn giữ riêng trong mô-đun thử nghiệm có khối u?

Các vấn đề liên quan