我正在用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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。