Метод astype
Метод astype создает копию массива с элементами,
преобразованными к заданному типу данных.
Первым параметром метод принимает желаемый тип данных
в виде строки или объекта типа NumPy.
Вторым параметром можно управлять способом копирования данных.
Метод не изменяет исходный массив, а возвращает новый массив с указанным типом данных. Если преобразование невозможно (например, преобразование строки в число), будет вызвана ошибка.
Синтаксис
arr.astype(dtype, order='C', casting='unsafe', copy=True)
Пример
Давайте создадим массив целых чисел и преобразуем его в массив чисел с плавающей точкой:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
res = arr.astype(np.float64)
print(res)
Результат выполнения кода:
[1. 2. 3. 4. 5.]
Пример
Преобразуем массив чисел с плавающей точкой в массив целых чисел с потерей дробной части:
import numpy as np
arr = np.array([1.2, 2.8, 3.5, 4.1, 5.9])
res = arr.astype(np.int32)
print(res)
Результат выполнения кода:
[1 2 3 4 5]
Пример
Преобразуем массив целых чисел в массив логических значений:
import numpy as np
arr = np.array([0, 1, 2, 0, 3])
res = arr.astype(np.bool_)
print(res)
Результат выполнения кода:
[False True True False True]
Пример
Преобразуем массив чисел в массив строк с указанием типа через строку:
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
res = arr.astype('str')
print(res)
Результат выполнения кода:
['10' '20' '30' '40' '50']
Пример
Преобразуем двумерный массив из целых чисел в массив чисел с плавающей точкой:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
res = arr.astype(np.float32)
print(res)
Результат выполнения кода:
[[1. 2. 3.]
[4. 5. 6.]]
Пример
Проверим, что исходный массив не изменился после преобразования типа:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
res = arr.astype(np.float64)
print(arr)
print(res)
Результат выполнения кода:
[1 2 3 4 5]
[1. 2. 3. 4. 5.]
Пример
Преобразуем массив с сохранением размера памяти через параметр casting:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
res = arr.astype(np.int8, casting='safe')
print(res.dtype)
Результат выполнения кода:
int8