2009-11-01 5 views
24

मुझे एक विशेष Numpy प्रकार (जैसे np.int64, np.uint32, np.float32, आदि) खोजने में दिलचस्पी है, सभी संभावित मान्य मानों की सीमा क्या है (उदाहरण के लिए np.int32 संख्याओं को 2 ** 31-1 तक स्टोर कर सकते हैं)। बेशक, मुझे लगता है कि कोई सैद्धांतिक रूप से प्रत्येक प्रकार के लिए इसे समझ सकता है, लेकिन क्या अधिक पोर्टेबल कोड सुनिश्चित करने के लिए रन टाइम पर ऐसा करने का कोई तरीका है?वैध numpy मानों की रेंज

उत्तर

35

एक numpy dicussion सूची से हवाला देते हुए:

That kind of information is available via numpy.finfo() and numpy.iinfo(): 

In [12]: finfo('d').max 
Out[12]: 1.7976931348623157e+308 

In [13]: iinfo('i').max 
Out[13]: 2147483647 

In [14]: iinfo(uint8).max 
Out[14]: 255 

लिंक यहाँ है: link to numpy discussion group page

19

आप numpy.iinfo(arg).maxnumpy.finfo(arg).max का उपयोग arg के पूर्णांक प्रकार के लिए अधिकतम मूल्य को खोजने के लिए कर सकते हैं और अधिकतम मूल्य को खोजने के लिए arg के फ्लोट प्रकारों के लिए।

>>> numpy.iinfo(numpy.uint64).min 
0 
>>> numpy.iinfo(numpy.uint64).max 
18446744073709551615L 
>>> numpy.finfo(numpy.float64).max 
1.7976931348623157e+308 
>>> numpy.finfo(numpy.float64).min 
-1.7976931348623157e+308 

iinfo केवल min और max प्रदान करता है, लेकिन finfo भी इस तरह के eps (सबसे छोटी संख्या> 0 प्रदर्शनीय) और resolution (arg के प्रकार की अनुमानित दशमलव संख्या संकल्प) के रूप में उपयोगी मूल्यों प्रदान करता है।