Python: выбирайте размер соответствующего типа данных (int) автоматически

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

5
задан mathematical.coffee 19 December 2011 в 05:32
поделиться