मुझे ऐसे फ़ंक्शन की आवश्यकता है जो किसी सरणी से गैर-NaN मान देता है।numpy में कार्यक्षमता "isnotnan" कार्यक्षमता, क्या यह अधिक पाइथनिक हो सकता है?
>>> a = np.array([np.nan, 1, 2])
>>> a
array([ NaN, 1., 2.])
>>> np.invert(np.isnan(a))
array([False, True, True], dtype=bool)
>>> a[np.invert(np.isnan(a))]
array([ 1., 2.])
पायथन: 2.6.4 numpy: 1.3.0
साझा करें यदि आप एक बेहतर तरीका पता है, धन्यवाद
नोट: यदि आप पांडों को फ़िल्टर करने के लिए isnotnan का उपयोग करना चाहते हैं, तो यह तरीका है। –
@ चार्लीहेली 'pd.notnull() 'पांडा के लिए एक बेहतर विकल्प नहीं होगा? –
@ जोश डीडी। मैंने कोड की जांच की है और pd.notnull() संख्यात्मक मानों के बजाय * ऑब्जेक्ट्स * परीक्षण के लिए है, यदि ऑब्जेक्ट सरणी में कोई ऑब्जेक्ट किसी ऑब्जेक्ट का उदाहरण नहीं है तो ऋणात्मक लौट रहा है। यह np.isfinite() से धीमा हो जाएगा लेकिन मनमानी ऑब्जेक्ट सरणी (जैसे सूचियों के सरणी) को संभालने में सक्षम है। साफ खोज लें, और एक अच्छा विचार अगर आपकी सरणी में मनमानी वस्तुओं को शामिल किया जा सकता है। मुझे लगता है कि अगर आप भरोसा कर सकते हैं कि आपकी सरणी आम तौर पर नाएन और आईएनएफ को छोड़कर संख्यात्मक है तो np.isfinite तेज होगा, इसलिए उपयोग के मामले पर निर्भर करता है। इसे लाने के लिए धन्यवाद, मुझे नहीं लगता कि उत्तर पोस्ट होने पर यह आसपास था। –