Я выделяю (возможно, большую) матрицу нулей с помощью 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_type
, documentation. Д'о! (хотя ответы все еще полезны, потому что у меня нет 1.6.0).