Numpy astype() — это функция приведения типов данных в Python. Чтобы преобразовать один из типов в int или один из других типов в numpy, используйте метод numpy astype().
Numpy float в массив int
Чтобы преобразовать numpy float в массив int в Python, используйте функцию np.astype(). np.astype() — это библиотечная функция numpy, которая принимает массив значений с плавающей запятой и преобразует его в целочисленный массив.
Давайте конвертировать шаг за шагом.
Шаг 1: Создайте массив numpy
См. следующий код.
|
1 2 3 4 5 6 |
# app.py import numpy as np og_array = np.array([[11.21, 19.21], [46.21, 18.21], [29.21, 21.21]]) print(og_array) |
Выход:
|
1 2 3 4 |
python3 app.py [[11.21 19.21] [46.21 18.21] [29.21 10.21]] |
Шаг 2: Преобразуйте Numpy float в int, используя numpy.astype()
Преобразуем массив с плавающей запятой в массив int.
|
1 2 3 4 5 6 7 8 9 10 |
# app.py import numpy as np og_array = np.array([[11.21, 19.21], [46.21, 18.21], [29.21, 21.21]]) print(og_array) print('After converting numpy float array to int array') int_array = og_array.astype(int) print(int_array) |
Выход:
|
1 2 3 4 5 6 7 8 |
python3 app.py [[11.21 19.21] [46.21 18.21] [29.21 21.21]] After converting numpy float array to int array [[11 19] [46 18] [29 21]] |
Из вывода видно, что все значения преобразованы в целочисленные значения.
Теперь мы проверим dtype данного объекта массива.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
# app.py import numpy as np og_array = np.array([[11.21, 19.21], [46.21, 18.21], [29.21, 21.21]]) print(og_array) print('After converting numpy float array to int array') int_array = og_array.astype(int) print(int_array) print("The data type of int_array is: ") print(int_array.dtype) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 |
python3 app.py [[11.21 19.21] [46.21 18.21] [29.21 21.21]] After converting numpy float array to int array [[11 19] [46 18] [29 21]] The data type of int_array is: int64 |
Мы видим, что тип данных преобразованного массива — целое число.
Преобразование массива с плавающей запятой Numpy в int с помощью функции np.int_()
Numpy int_() — это тип Python, представляющий скалярный тип NumPy.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
# app.py import numpy as np og_array = np.array([[11.21, 19.21], [46.21, 18.21], [29.21, 21.21]]) print(og_array) print('After converting numpy float array to int array') int_array = np.int_(og_array) print(int_array) print("The data type of int_array is: ") print(int_array.dtype) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 |
python3 app.py [[11.21 19.21] [46.21 18.21] [29.21 21.21]] After converting numpy float array to int array [[11 19] [46 18] [29 21]] The data type of int_array is: int64 |
Здесь мы получим тот же результат, но другим методом.
Но я предлагаю использовать функцию numpy astype(), которая может преобразовывать стандартные типы данных.
Numpy astype() с np.inf() и np.nan()
В нашем исходном массиве некоторые значения являются не плавающими, а значениями np.inf или np.nan.
|
1 2 3 4 5 6 7 8 9 10 |
# app.py import numpy as np og_array = np.array([[11.21, np.nan], [46.21, 18.21], [29.21, np.inf]]) print(og_array) print('After converting numpy float array to int array') int_array = og_array.astype(int) print(int_array) |
Выход:
|
1 2 3 4 5 6 7 8 |
python3 app.py [[11.21 nan] [46.21 18.21] [29.21 inf]] After converting numpy float array to int array [[ 11 -9223372036854775808] [ 46 18] [ 29 -9223372036854775808]] |
Из вывода видно, что результаты неожиданны. Таким образом, вы должны быть осторожны при преобразовании всех значений массива в другой тип данных.
Numpy nan и numpy inf являются значениями с плавающей запятой и не могут быть осмысленно преобразованы в int.
Преобразование массива Numpy в комплексное число
Функция Numpy astype() может преобразовывать любой тип данных в другой. Однако он не обязательно преобразуется в определенные типы данных.
Давайте преобразуем тип данных float в тип «complex128», используя numpy.astype().
|
1 2 3 4 5 6 7 8 9 10 11 12 |
# app.py import numpy as np og_array = np.array([[11.21, 19.21], [46.21, 18.21], [29.21, 21.21]]) print(og_array) print('After converting numpy float array to complex array') int_array = og_array.astype(complex) print(int_array) print("The data type of int_array is: ") print(int_array.dtype) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 |
python3 app.py [[11.21 19.21] [46.21 18.21] [29.21 21.21]] After converting numpy float array to complex array [[11.21+0.j 19.21+0.j] [46.21+0.j 18.21+0.j] [29.21+0.j 21.21+0.j]] The data type of int_array is: complex128 |
Итак, мы преобразовали массив numpy float в сложный массив numpy, используя функцию np astype().
Заключение

Функция Numpy astype() относительно проста в использовании и поставляется вместе с другими подобными полезными функциями, и мы можем конвертировать из одного стандартного типа данных в другой.
