In NumPy, I can get the size (in bytes) of a particular data type by:
datatype(...).itemsize
or:
datatype(...).nbytes
For example:
np.float32(5).itemsize # 4
np.float32(5).nbytes # 4
I have two questions. First, is there a way to get this information without creating an instance of the datatype? Second, what's the difference between itemsize
and nbytes
?
You need an instance of the dtype
to get the itemsize, but you shouldn't need an instance of the ndarray
. (As will become clear in a second, nbytes
is a property of the array, not the dtype.)
E.g.
np.dtype(float).itemsize # 8
np.dtype(np.float32).itemsize # 4
np.dtype('|S10').itemsize # 10
As far as the difference between itemsize
and nbytes
, nbytes
is just x.itemsize * x.size
.
E.g.
np.arange(100).itemsize # 8
np.arange(100).nbytes # 800