加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-16 22:13:27 所属栏目:Python 来源:网络整理
导读:我正在用Python和numpy分配一个(可能很大的)零矩阵.我计划在其中放置从1到N的无符号整数. N变化很大:很容易从1到100万,甚至更多. 在矩阵初始化之前我知道N.如何选择矩阵的数据类型,以便我知道它可以保存大小为N的(无符号)整数? 此外,我想选择最小的这种数

我正在用Python和numpy分配一个(可能很大的)零矩阵.我计划在其中放置从1到N的无符号整数.

N变化很大:很容易从1到100万,甚至更多.

在矩阵初始化之前我知道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_type,documentation.D’哦! (虽然答案仍然有用,因为我没有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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读