我需要创建一个非常大的numpy
数组,它将保存非负整数值。我提前知道最大的整数是多少,所以我想尝试使用可能的最小数据类型。目前为止,我的代码如下:
>>> import numpy as np
>>> def minimal_type(max_val, types=[np.uint8,np.uint16,np.uint32,np.uint64]):
''' finds the minimal data type needed to correctly store the given max_val
returns None if none of the provided types are sufficient
'''
for t in types:
if max_val <= np.iinfo(t).max:
return t
return None
>>> print(minimal_type(42))
<class 'numpy.uint8'>
>>> print(minimal_type(255))
<class 'numpy.uint8'>
>>> print(minimal_type(256))
<class 'numpy.uint16'>
>>> print(minimal_type(4200000000))
<class 'numpy.uint32'>
>>>
是否有一种内置于 numpy
的方法可以实现此功能?