दिलचस्प पोस्ट
विज़ुअल स्टूडियो में विधानसभा का संकलन स्विफ्ट 2.0 कैलेंडर घटक त्रुटि पायथन और सीटीप्स: डेटा को वापस पाने के लिए एक सूचक के रूप में किसी फ़ंक्शन को एक स्ट्रेट पास करना टैबलेट या फोन – एंड्रॉइड डेटाबेस में विभिन्न संस्थाओं से समान डेटा – सर्वश्रेष्ठ अभ्यास – फ़ोन नंबर उदाहरण मैं Chrome DevTools में एक तत्व पर चलाई गई घटनाओं को कैसे देखूं? एसडीएल मुख्य मैक्रो क्यों परिभाषित करता है? यूट्यूब वीडियो iframe के माध्यम से एंबेडेड है, z-index की उपेक्षा करना? फ़ायरफ़ॉक्स समान मूल नीति को अक्षम करें मैं अपने डेल्फी प्रोग्राम के एक उदाहरण से दूसरे को एक स्ट्रिंग कैसे भेजूं? प्रतिनिधिमंडल के लिए कमजोर सूचक का उपयोग क्यों करें? Git-SVN के साथ एक गैर-मानक एसएनएन भंडार क्लोनिंग स्पार्क में आरडीडी कैसे स्थानांतरित किया जाए Nginx में $ मेजबान और $ http_host का अंतर क्या है पृष्ठ लोड पर ब्राउज़र ज़ूम स्तर कैसे बढ़ाएं?

Numpy dtypes को मूल अजगर प्रकारों में परिवर्तित करना

अगर मेरे पास एक नुकीले dtype है, तो मैं इसे अपने सबसे निकटतम अजगर डेटा प्रकार में कैसे रूपांतरित कर सकता हूं? उदाहरण के लिए,

numpy.float32 -> "python float" numpy.float64 -> "python float" numpy.uint32 -> "python int" numpy.int16 -> "python int" 

मैं इन सभी मामलों के मैपिंग के साथ आने की कोशिश कर सकता हूं, लेकिन क्या नंबू निकटतम संभव पैतृक प्रकारों में अपने डीटीप को परिवर्तित करने का कुछ स्वचालित तरीका प्रदान करता है? इस मैपिंग को संपूर्ण नहीं होना चाहिए, लेकिन इसे सामान्य डीटीप में परिवर्तित करना चाहिए जिसमें पास अजगर एनालॉग होता है। मुझे लगता है कि यह पहले से कहीं न कहीं शून्य में होता है।

वेब के समाधान से एकत्रित समाधान "Numpy dtypes को मूल अजगर प्रकारों में परिवर्तित करना"

सबसे नमुपी मानों को देशी पायथन प्रकार में कनवर्ट करने के लिए a.item() या np.asscalar(a) का प्रयोग करें:

 import numpy as np # examples using a.item() type(np.float32(0).item()) # <type 'float'> type(np.float64(0).item()) # <type 'float'> type(np.uint32(0).item()) # <type 'long'> # examples using np.asscalar(a) type(np.asscalar(np.int16(0))) # <type 'int'> type(np.asscalar(np.cfloat(0))) # <type 'complex'> type(np.asscalar(np.datetime64(0))) # <type 'datetime.datetime'> type(np.asscalar(np.timedelta64(0))) # <type 'datetime.timedelta'> ... 

NumPy मैनुअल में और पढ़ें। जिज्ञासु के लिए, आपके सिस्टम के लिए रूपांतरण की एक तालिका बनाने के लिए:

 for name in dir(np): obj = getattr(np, name) if hasattr(obj, 'dtype'): try: npn = obj(0) nat = npn.item() print('{0} ({1!r}) -> {2}'.format(name, npn.dtype.char, type(nat))) except: pass 

कुछ नम्पैपी प्रकार हैं जिनके पास कुछ सिस्टम पर कोई देशी पायथन समकक्ष नहीं है, जिसमें शामिल हैं: clongdouble , clongfloat , complex192 , complex256 , float128 , longcomplex , longdouble और longfloatasscalar उपयोग करने से पहले asscalar समतुल्य रूप में परिवर्तित करने की आवश्यकता है।

अपने आप को नमी प्रकार और मानक अजगर के मिश्रित सेट मिला। चूंकि सभी नमक प्रकार numpy.generic से numpy.generic , यहां बताया गया है कि कैसे आप सब कुछ को अजगर मानक प्रकार में परिवर्तित कर सकते हैं:

 if isinstance(obj, numpy.generic): return numpy.asscalar(obj) 

कैसा रहेगा:

 In [51]: dict([(d, type(np.zeros(1,d).tolist()[0])) for d in (np.float32,np.float64,np.uint32, np.int16)]) Out[51]: {<type 'numpy.int16'>: <type 'int'>, <type 'numpy.uint32'>: <type 'long'>, <type 'numpy.float32'>: <type 'float'>, <type 'numpy.float64'>: <type 'float'>} 

मुझे लगता है कि आप सामान्य प्रकार की कन्वर्ट फ़ंक्शन जैसे ही लिख सकते हैं:

 import numpy as np def get_type_convert(np_type): convert_type = type(np.zeros(1,np_type).tolist()[0]) return (np_type, convert_type) print get_type_convert(np.float32) >> (<type 'numpy.float32'>, <type 'float'>) print get_type_convert(np.float64) >> (<type 'numpy.float64'>, <type 'float'>) 

इसका मतलब है कि कोई निश्चित सूची नहीं है और आपका कोड अधिक प्रकारों के साथ पैमाने पर होगा

आप उस ऑब्जेक्ट के item() विधि को कॉल भी कर सकते हैं जिसे आप परिवर्तित करना चाहते हैं:

 >>> from numpy import float32, uint32 >>> type(float32(0).item()) <type 'float'> >>> type(uint32(0).item()) <type 'long'> 

numpy है कि एक मानचित्रण में जानकारी प्रकार के रूप में सामने typeDict ताकि आप नीचे की तरह कुछ कर सकते हैं:

 >>> import __builtin__ >>> import numpy as np >>> {v: k for k, v in np.typeDict.items() if k in dir(__builtin__)} {numpy.object_: 'object', numpy.bool_: 'bool', numpy.string_: 'str', numpy.unicode_: 'unicode', numpy.int64: 'int', numpy.float64: 'float', numpy.complex128: 'complex'} 

यदि आप अपने नाम के बजाय वास्तविक अजगर प्रकार चाहते हैं, तो आप कर सकते हैं:

 >>> {v: getattr(__builtin__, k) for k, v in np.typeDict.items() if k in vars(__builtin__)} {numpy.object_: object, numpy.bool_: bool, numpy.string_: str, numpy.unicode_: unicode, numpy.int64: int, numpy.float64: float, numpy.complex128: complex} 

यदि आप (numpy.array या numpy scalar या देशी प्रकार या numpy.darray) को मूल प्रकार में परिवर्तित करना चाहते हैं तो आप बस ऐसा कर सकते हैं:

 converted_value = getattr(value, "tolist", lambda x=value: x)() 

tolist अपने स्केलर या सरणी को पैथथन देशी प्रकार में बदल देगा। डिफ़ॉल्ट लैम्ब्डा फ़ंक्शन उस केस का ख्याल रखता है जहां मूल्य पहले से ही मूल है।