有关数组的数据类型的信息

2024-04-19 07:56:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道numpy有方法numpy.finfo()来获取关于基于浮点的数据类型的信息,有方法numpy.iinfo()来获取它的整数对应项。有接受任何数据类型的方法吗?目前,我不得不自己选择一个合适的:

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

Tags: 方法numpy信息data整数max浮点数据类型
2条回答

对于“any”类型,我很确定没有这样的方法,因为这不是一般信息。你知道吗

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

一般来说,那是个物体。这样一个数组的每个单元都需要一个可以存储内存地址的存储大小。例如,它可能引用Python long,但这可能不是您使用NumPy的任务类型。你知道吗

小心:Python long强制转换为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属性获取“float”或“integer”信息

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

我不认为NumPy提供了这样的功能。只需自己定义函数,将其放入模块中,并根据需要导入即可。请注意,通常使用裸except是一种不好的做法。在这里使用exceptValueError会更好。你知道吗

相关问题 更多 >