Размер массива NumPy для int8 и bool dtypePython

Программы на Python
Anonymous
Размер массива NumPy для int8 и bool dtype

Сообщение Anonymous »

Я пытаюсь использовать атрибут nbytes numpy для проверки использования памяти массивами с разными типами dtype. Я заметил следующее:

Код: Выделить всё

>>> np.zeros(1024, dtype='int64').nbytes / 1024    # in kB
8.0
>>> np.zeros(1024, dtype='int8').nbytes / 1024
1.0
>>> np.zeros(1024, dtype='bool').nbytes / 1024
1.0  # ?
Результаты первых двух строк имеют для меня смысл, поскольку сообщаемое использование памяти (8 КБ и 1 КБ соответственно) представляет собой просто сумму использования памяти каждым элементом ( 8 и 1 байт соответственно), умноженные на количество элементов (1024 в обоих случаях). Однако в последнем случае я бы предположил, что массиву типа bool требуется только один бит памяти на элемент, однако, похоже, для него требуется 8 бит на элемент, так же, как int8.
Мои вопросы:
  • Правильно ли я интерпретирую вывод nbytes? Если да, то как нам следует понимать тот факт, что тип bool не использует один бит на элемент?
  • Имея это в виду, есть ли смысл использовать тип bool< /code> массив типа int8?
Этот вопрос возник, когда я имею дело с массивами двоичных значений (0 и 1) и пытался найти эффективное решение (с точки зрения памяти, поскольку я предполагаю, что нет различий во времени вычислений?), которое, как я думал, будет использовать тип bool .

Подробнее здесь: https://stackoverflow.com/questions/786 ... bool-dtype

Вернуться в «Python»