0

我知道 numpy 具有numpy.finfo()有关基于浮点数的 dtypenumpy.iinfo()及其整数对应物的信息的方法。有没有接受任何 dtype 的方法?目前我不得不自己选择正确的:

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

2 回答 2

2

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

于 2013-09-01T17:29:51.063 回答
0

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

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

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

注意:Python long casts to 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
于 2013-09-02T04:44:40.740 回答