NumPy - data type objects

https://numpy.org/doc/stable/reference/generated/numpy.dtype.html

https://numpy.org/doc/stable/reference/arrays.dtypes.html

INTRODUCTION

Default data type in Python: strings, integer, float, boolean, complex. NumPy has some extra data types.

A data type object describes how the bytes in the fixed-size block of memory corresponding to an array item should be interpreted.


# Using array-scalar types.

dt_int = np.dtype(int)   # Python-compatible integer

# "b" (byte), "i1", 'int8';
# "h", "i2", "int16";
# "i", "i4", "int32"; "i8", "int64" ('int' 64-bit);
# unsigned int: "B", "u1", 'uint8';
# "H", "u2", 'uint16';
# "u4", "uint32";
# "u8", "uint64";

dt_float = np.dtype(float)   # Python-compatible floating-point number

# "f2", 'float16';
# "f", "f4", 'float32' ('float' in 32-bit);
# "d", "f8", 'float64' ('double', 'float' in 64-bit);
# 'float128';

dt_bool = np.dtype(bool)

dt_complex = np.dtype(complex)
# 'complex64', 'complex128', 'complex256'

dt_object = np.dtype(object)   # Python object

# Sized aliases to dtypes (useful for Numba).

np.int8, np.int16, np.int32, np.int64,
np.uint8, np.uint16, np.uint32, np.uint64,
np.float16, np.float32, np.float64,
np.complex64, np.complex128

np.sqrt(np.array([-1, 0, 1]))   # default dtype=float
# RuntimeWarning: invalid value encountered in sqrt
# array([nan,  0.,  1.])

np.sqrt(np.array([-1, 0, 1], dtype=complex))
# array([0.+1.j, 0.+0.j, 1.+0.j])

a = np.array([1, 2, 3], dtype=complex)

a.real   # or np.real(a)
# array([1., 2., 3.])

a.imag   # or np.imag(a)
# array([0., 0., 0.])

# Structured types, fields with names.

dt_gender = np.dtype([("gender","S1")])   # M/F string
dt_person = np.dtype([("name","S25"), ("age", "u1")])
dt_RGBA = np.dtype([('R','u1'), ('G','u1'), ('B','u1'), ('A','u1')])
dt_rgb = np.dtype({'names': ('r','g','b'), 'formats': ('u1','u1','u1')})

# Converting data types.

a = np.array([1.1, 0, 3.1])   # array([1.1, 0., 3.1])
print(a.dtype)   # dtype('float64')

b = a.astype(int)   # array([1, 0, 3]), copy
print(b.dtype)   # dtype('int32')

np.may_share_memory(a, b)   # False

c = a.astype(bool)   # array([ True, False, True])

EXERCISES

Conversion from string to int: ["1","2"], ["a","2"] (ValueError).