2013-09-01 37 views
0

我知道numpy的方法有numpy.finfo()以获取有关基于浮点数的dtype的信息,以及numpy.iinfo()的整数副本。有没有一种方法可以接受任何dtype?目前我被迫自己挑选合适的人:有关dtype数组的信息

try: 
    maxv = numpy.finfo(data.dtype).max 
except: 
    maxv = numpy.iinfo(data.dtype).max 

回答

2

我不认为NumPy提供了这样的功能。只需自己定义函数,将其放入模块中,并根据需要导入它。请注意,通常使用裸露的except是不好的做法。使用除了ValueError这里会更好。

0

对于“任何”类型,我很肯定没有这样的方法,因为这不是一般信息。

In [7]: np.array([], dtype=object).dtype.itemsize 
Out[7]: 8 

这是一个对象,一般来说。这种阵列的每个单元都需要一个可以存储内存地址的存储大小。例如,它可能会引用一个很长的Python,但可能这不是您使用NumPy的任务。

要小心:Python长期转换为int64,除非它足够大,需要多于64位!

In [11]: np.array([long(123)]).dtype 
Out[11]: dtype('int64') 

In [12]: np.array([123456789 ** 1234]).dtype 
Out[12]: dtype('object') 

你可以得到的信息,如果它是一个“浮动”或“整数”从kind属性

In [14]: np.array([123456789 ** 1234]).dtype.kind 
Out[14]: 'O' 

In [15]: np.array([long(123)]).dtype.kind 
Out[15]: 'i' 

In [16]: np.array([2.3, 4.3]).dtype.kind 
Out[16]: 'f' 

您可以按名称从NumPy的得到它:

{"i": np.iinfo, "f": np.finfo}[data.dtype.kind](data.dtype).max