Я выделяю (возможно, большую) матрицу нулей с помощью 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 ) )
ура!
Aha!
Только что реализованный numpy v1.6.0 + имеет np.min_scalar_type
, документацию . D'о! (хотя ответы все еще полезны, потому что у меня нет 1.6.0).