有关数组dtype的信息

时间:2013-09-01 17:04:12

标签: python types numpy

我知道numpy有方法numpy.finfo()来获取有关基于浮点数的dtype和numpy.iinfo()的整数对应的信息。有没有接受任何dtype的方法?目前我被迫自己选择合适的人:

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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