2016-07-21 5 views
11

हमारे पास numpy.testing.assert_array_equal है कि दो सरणी बराबर हैं।numpy परीक्षण assert array बराबर नहीं

लेकिन numpy.testing.assert_array_not_equal करने का सबसे अच्छा तरीका क्या है, यह सुनिश्चित करने के लिए कि दो सरणी बराबर नहीं हैं?

+0

सरणी कितनी असमान हैं? क्या वे प्रत्येक तत्व, या कम से कम एक में भिन्न होना चाहिए? –

+0

कम से कम एक तत्व असमान होना चाहिए। यही है, दो सरणी की सामग्री एक जैसी नहीं हो सकती है। यदि एक तत्व भिन्न होता है, तो सब कुछ ठीक है। –

+1

फिर @ Eswcvlad का जवाब शायद आपको मिलेगा सबसे सुंदर हैक। –

उत्तर

10

आप विशेष रूप से NumPy परीक्षण का उपयोग करना चाहते हैं, तो आप एक साथ numpy.testing.assert_array_equalnumpy.testing.assert_raises के साथ विपरीत परिणाम के लिए उपयोग कर सकते हैं। उदाहरण के लिए:

assert_raises(AssertionError, assert_array_equal, array_1, array_2) 

इसके अलावा numpy.testing.utils.assert_array_compare है (यह numpy.testing.assert_array_equal द्वारा प्रयोग किया जाता है), लेकिन मैं इसे कहीं भी दस्तावेज नहीं दिख रहा है, इसलिए सावधानी से उपयोग करें। यह एक जाँच करेगा कि हर तत्व अलग है, तो मुझे लगता है कि यह आपके उपयोग के मामले नहीं है:

import operator 

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

पहली विधि के लिए साफ हैक हैक। दूसरा एकमात्र सफल होगा यदि प्रत्येक तत्व, न केवल कुछ, अलग-अलग है, जहां तक ​​मैं कह सकता हूं। यकीन नहीं है कि ओपी क्या चाहता है। +1 या तो रास्ता। –

+0

हां, आप दूसरे के बारे में सही हैं। जवाब संपादित करेंगे। – Eswcvlad

+0

पहला यह मेरे लिए करता है! धन्यवाद! –

4

मुझे नहीं लगता कि वहाँ NumPy परीक्षण ढांचे में सीधे बनाया कुछ भी है, लेकिन तुम सिर्फ इस्तेमाल कर सकते हैं:

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

और unittest ढांचे में बनाया या True उदा को assert_equal रूप NumPy के साथ जांच के साथ सच जोर

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

आपके परीक्षण की भावना फिसल गई है। ओपी असमान सरणी पास करने के लिए चाहता है। –

+0

यूप - बस परीक्षण को दूसरी तरफ फिसल गया। स्पॉटिंग के लिए धन्यवाद। @MadPhysicist – Mark

+0

आपको शायद 'TestCase.assertTrue (np.any (...))' (या 'nose.tools.assert_true (np.any (...)) 'का उपयोग करना चाहिए, यदि आप' टेस्टकेस 'के बाहर हैं)। –

1

सुनिश्चित नहीं हैं कि क्यों इस पोस्ट नहीं किया गया है, हो सकता है मैं सवाल ठीक से समझ में नहीं आया है, लेकिन क्या के बारे में:

assert not np.array_equal(array1 , array2) 

किसी भी कारण है कि आप numpy के परीक्षण मॉड्यूल में विशेष रूप से इसे रखने के लिए चाहते हैं?