2012-10-03 45 views
23

क्या एनएनएन को पूर्णांक की एक अम्पी सरणी में स्टोर करने का कोई तरीका है? मैं:Numpy पूर्णांक नैन

a=np.array([1],dtype=long) 
a[0]=np.nan 

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: cannot convert float NaN to integer 
+0

@ tpg2114, हाँ, यह मुझे स्पष्ट नहीं करेगा अगर उत्तर numpy या pandas के बारे में है। – Yariv

उत्तर

23

की तरह नहीं, आप कम से कम NumPy के वर्तमान संस्करण के साथ नहीं कर सकते हैं। nan फ्लोट एरे केवल के लिए एक विशेष मान है।

एक विशेष बिट पेश करने के बारे में वार्ताएं हैं जो गैर-फ्लोट एरे को स्टोर करने के लिए nan से मेल खाती हैं, लेकिन अब तक (2012/10), यह केवल वार्ता है।

इस दौरान, आप numpy.ma पैकेज पर विचार कर सकते: -99,999 तरह गलत पूर्णांक उठा के बजाय, आप एक अमान्य मान का प्रतिनिधित्व करने के लिए विशेष numpy.ma.masked मूल्य इस्तेमाल कर सकते हैं।

a = np.ma.array([1,2,3,4,5], dtype=int) 
a[1] = np.ma.masked 
masked_array(data = [1 -- 3 4 5], 
      mask = [False True False False False], 
     fill_value = 999999) 
+4

लेकिन ध्यान रखें कि मास्क किए गए सरणी का उपयोग करने के लिए एक बड़ी प्रदर्शन लागत है क्योंकि उन्हें शुद्ध पायथन में लागू किया गया है! – gaborous

4

एक नेन एक चल बिन्दु केवल एक चीज है, पूर्णांकों में इसके बारे में कोई प्रतिनिधित्व नहीं है, इसलिए कोई :)

एक अमान्य मान उठाओ, -99999

+3

अमान्य के रूप में एक वैधानिक मूल्य चुनना एक अच्छा समाधान नहीं होगा क्योंकि यह नैन के समान गुणों को दोहराना नहीं होगा, अर्थात्: नैन और किसी भी अन्य मूल्य के बीच की तुलना में झूठ होना चाहिए। – christang

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^