दिलचस्प पोस्ट
जहां उपयोगकर्ता अपलोड से छवियों को बचाने के लिए सबसे अच्छी जगह है शून्य से विभाजित बिंदु (या दोहरी परिशुद्धता) के साथ क्यों नहीं विभाजन करता है java.lang.ArithmeticException: / शून्य से जावा में एक पैरामीटर के साथ एक गतिविधि प्रारंभ करें सी ++ ब्लॉक – मूल्य या संदर्भ से अपवाद पकड़ो? इंतजार में एक टास्क कैसे रद्द करें? टेक्स्ट की पंक्तियों को आर में लिखें 'DOMWindow' पर 'पोस्ट-मेसेज' निष्पादित करने में विफल: https://www.youtube.com! == http: // localhost: 9000 स्ट्रिंग लीटरल्स का सी अनुकूलन ओपनसीवी टेम्पलेट मिलान और पारदर्शिता स्पार्क 2.0 डेटासेट बनाम डेटाफ़्रेम एकाधिक पंक्तियों को स्पैन करने के लिए मैं एक बूटस्ट्रैप कॉलम कैसे प्राप्त करूं? ब्रेकपॉइंट वर्तमान में हिट नहीं होगा किसी Silverlight अनुप्रयोग में इस दस्तावेज़ के लिए कोई प्रतींक लोड नहीं किया गया है जावा स्विंग में JTextField से मूल्य कैसे प्राप्त करें? एंड्रॉइड गतिविधि जीवन चक्र – इन सभी तरीकों के लिए क्या हैं? कस्टम सूची दृश्य के अंदर पाठ के लिए काम नहीं कर रहा है

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

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

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

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

Solutions Collecting From Web of "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 अपने स्केलर या सरणी को पैथथन देशी प्रकार में बदल देगा। डिफ़ॉल्ट लैम्ब्डा फ़ंक्शन उस केस का ख्याल रखता है जहां मूल्य पहले से ही मूल है।