gpt4 book ai didi

Python:自动选择合适的数据类型大小(int)

转载 作者:太空狗 更新时间:2023-10-30 01:17:01 24 4
gpt4 key购买 nike

我正在使用 Python 和 numpy 分配一个(可能很大的)零矩阵。我打算在其中放入从 1 到 N 的无符号整数。

N 变化很大:范围很容易从 1 一直到一百万,甚至可能更多。

我在矩阵初始化之前知道 N。如何选择矩阵的数据类型,以便我知道它可以容纳大小为 N 的(无符号)整数?

此外,我想选择最小这样的数据类型。

例如,如果 N 是 1000,我会选择 np.dtype('uint16')。如果 N 是 240,uint16 可以工作,但是 uint8 也可以工作,它是我可以用来保存数字的最小数据类型。

这就是我初始化数组的方式。我正在寻找 SOMETHING_DEPENDING_ON_N:

import numpy as np
# N is known by some other calculation.
lbls = np.zeros( (10,20), dtype=np.dtype( SOMETHING_DEPENDING_ON_N ) )

干杯!

啊哈!

刚刚意识到 numpy v1.6.0+ 有 np.min_scalar_typedocumentation .哦! (尽管答案仍然有用,因为我没有 1.6.0)。

最佳答案

编写一个简单的函数来完成这项工作怎么样?

import numpy as np

def type_chooser(N):
for dtype in [np.uint8, np.uint16, np.uint32, np.uint64]:
if N <= dtype(-1):
return dtype
raise Exception('{} is really big!'.format(N))

示例用法:

>>> type_chooser(255)
<type 'numpy.uint8'>
>>> type_chooser(256)
<type 'numpy.uint16'>
>>> type_chooser(18446744073709551615)
<type 'numpy.uint64'>
>>> type_chooser(18446744073709551616)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "spam.py", line 6, in type_chooser
raise Exception('{} is really big!'.format(N))
Exception: 18446744073709551616 is really big!

关于Python:自动选择合适的数据类型大小(int),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8557096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com