Чтобы немного расширить опцию ctypes
[1]:
>>> import ctypes
>>> ctypes.sizeof(ctypes.c_int)
4
>>> ctypes.sizeof(ctypes.c_long)
8
>>> ctypes.sizeof(ctypes.c_float)
4
>>> ctypes.sizeof(ctypes.c_double)
8
С NumPy [2], например ::10000 *
>>> import numpy as np
>>> np.zeros((1,1), dtype='uint8').nbytes
1
>>> np.zeros((1,1), dtype='uint16').nbytes
2
>>> np.zeros((1,1), dtype='uint64').nbytes
8
>>> np.zeros((1,1), dtype='float').nbytes # watch out for this one
8
>>> np.zeros((1,1), dtype='float32').nbytes
4
>>> np.zeros((1,1), dtype='float64').nbytes
8
>>> np.zeros((1,1), dtype='single').nbytes
4
>>> np.zeros((1,1), dtype='double').nbytes
8
numpy.astype выполняет преобразования, например,
>>> np.zeros((1,1), dtype='double').astype('single').nbytes
4
[1] https://docs.python.org/3/library/ctypes.html#fundamental-data-types
[2] https://docs.scipy.org/doc/numpy-1.15.1/reference/arrays.dtypes.html