На чтение 6 мин Просмотров 1.5к. Опубликовано 01.04.2022
Чтобы изменить тип данных массива NumPy, используйте метод astype (тип данных). Это популярная функция в Python, используемая для изменения dtype массива NumPy, который нам предоставили. Мы будем использовать функцию numpy.astype() для изменения dtype указанного объекта массива. Целевой тип данных в этом случае имеет решающее значение для передачи в качестве аргумента вызывающей функции. Все общие и встроенные типы данных поддерживаются функцией. Функция astype подробно объясняется с многочисленными примерами ниже.
Синтаксис Astype()
Вот синтаксис функции astype() в Python.
# Dataframe.astype(dtype, copy=True, errors=’raise’)
Тип данных или имя столбца dict -> тип данных должен быть идентифицирован параметром dtype. Используйте col: dtype,… для преобразования одного или нескольких столбцов DataFrame в типы, специфичные для столбцов, где col — это метка столбца, а dtype — тип numpy.dtype или Python.
Логический (True или False) параметр «copy» по умолчанию имеет значение True. Когда copy=True, возвращается копия.
Ошибки включают «повышение» и «игнорирование», причем «повышение» является значением по умолчанию. Он позволяет вызывать исключения, если он настроен на повышение. Если для него задано игнорирование, он подавляет исключения и возвращает исходный объект в случае ошибки.
Теперь, когда вы поняли синтаксис функции astype(), давайте посмотрим на некоторые примеры того, как она работает на практике.
Содержание
- Пример 1
- Пример 2
- Пример 3
- Пример 4
- Пример 5
- Заключение
Пример 1
В коде Python, показанном ниже, мы использовали метод numpy.astype() из библиотеки NumPy, чтобы изменить тип данных существующего массива. Мы можем использовать код «import numpy as np», чтобы импортировать библиотеку NumPy в нашу программу. Убедитесь, что библиотека NumPy уже присутствует в нашей системе.
Тип данных указанного массива NumPy — «плавающий». Мы можем проверить тип данных, используя атрибут dtype, принадлежащий массиву NumPy. Мы использовали функцию astype() (как вы можете видеть в 4-й строке кода) с типом данных int в качестве аргумента для изменения типа данных существующего массива NumPy.
Мы использовали copy=false в качестве второго аргумента функции, чтобы изменить тип данных используемого массива NumPy. Наконец, мы напечатали результат в последней строке кода.
import numpy as np
my_arr = np.array([[2,5,8,9],[9,7,6,33]],dtype=‘float’)
print(‘The existing array datype is:’,my_arr.dtype)
my_arr = my_arr.astype(int,copy=False)
print(‘The array datatype after change is:’,my_arr.dtype)
Результат представлен ниже. Здесь вы можете видеть, что первая строка указывает тип данных существующего массива, а последняя показывает тип данных после изменения.
Пример 2
В этом примере кода мы попытаемся преобразовать существующий массив NumPy с плавающей запятой в сложный тип. ’float’ — это существующий тип данных данного массива NumPy. Атрибут dtype массива NumPy можно использовать для проверки типа данных, как показано во второй строке кода ниже.
Мы использовали функцию numpy.astype() с типом данных «complex128» в качестве аргумента для изменения типа данных существующего массива NumPy. Мы использовали copy=false в качестве второго параметра numpy.astype() для изменения типа данных массива NumPy на месте.
import numpy as np
my_arr = np.array([[2,5,8,9],[9,7,6,33]],dtype=‘float’)
print(‘The existing array datype is:’,my_arr.dtype)
my_arr = my_arr.astype(‘complex128’,copy=False)
print(‘The array datatype after change is:’,my_arr.dtype)
Ниже приведен вывод существующего, а также нового типа данных массива.
Пример 3
В третьем примере нашей статьи мы заменяем текущий тип данных массива NumPy с плавающей запятой строкой без знака. Тип данных «плавающий» — это существующий тип данных созданного массива NumPy. Атрибут dtype массива NumPy можно использовать для проверки типа данных.
Мы использовали функцию numpy.astype() и передали тип данных в виде строки без знака, чтобы изменить тип данных существующего массива NumPy. Мы использовали copy=false в качестве второго параметра для numpy.astype(), чтобы изменить тип данных массива NumPy на месте.
import numpy as np
my_arr = np.array([[2,5,8,9],[9,7,6,33]],dtype=‘float’)
print(‘The existing array datype is:’,my_arr.dtype)
my_arr = my_arr.astype(‘U’,copy=False)
print(‘The array datatype after change is:’,my_arr.dtype)
print(my_arr)
Вот результат существующего и нового типа данных после модификации.
Пример 4
Эта программа Python демонстрирует, как можно преобразовать тип данных массива NumPy из числа с плавающей запятой в объект. Используя метод np.astype() вместе с объектом типа данных, мы можем легко изменить тип данных данного массива NumPy. Наряду с этим пропустите второй аргумент, который имеет значение copy=False, чтобы изменить тип данных существующего массива, который используется без возврата нового массива.
import numpy as np
my_arr = np.array([[2,4,1,9],[9,7,6,33]],dtype=‘float’)
print(‘The existing array datype is:’,my_arr.dtype)
my_arr = my_arr.astype(‘O’,copy=False)
print(‘The array datatype after change is:’,my_arr.dtype)
print(my_arr)
Ниже выходной скриншот. Здесь вы можете просмотреть существующий тип данных массива и тип данных массива после изменения.
Пример 5
В последнем примере этой статьи мы подробно узнаем, как преобразовать массив NumPy в сложное целое число. Любой тип данных может быть преобразован в любой другой тип данных с помощью функции Numpy astype(). Однако он не всегда преобразуется в определенные типы данных.
Чтобы преобразовать тип данных «float» в тип «complex128», мы будем использовать numpy.astype(). См. приведенный ниже код. Сначала мы объявили массив с именем my_arr после импорта модуля NumPy. После этого мы выполнили функцию astype(), чтобы изменить тип данных. Вот прикрепленное изображение, чтобы вы понимали, для чего написана каждая строчка кода.
import numpy as p
arr_new = p.array([[14.20,17.24], [26.33, 16.22], [39.31, 31.31]])
print(arr_new)
print(‘After converting the array is as follows:’)
int_array = arr_new.astype(complex)
print(int_array)
print(«The data type of Int_array is: «)
print(int_array.dtype)
Мы преобразовали массив с плавающей запятой NumPy в сложный массив NumPy, используя метод astype(). Подтверждение можно найти на прилагаемом скриншоте.
Заключение
В этой статье мы узнали о функции astype(). Эта функция используется для изменения типа данных существующего массива NumPy с помощью встроенной функции astype библиотеки NumPy. У нас есть много типов данных, и мы можем легко изменить тип данных массива NumPy, минуя любой из этих типов данных. Мы можем изменить тип данных float массива NumPy на int, текст без знака, объект или сложный тип. Мы предоставили различные примеры, чтобы показать вам, как этого можно добиться.
method
- ndarray.astype(dtype, order=‘K’, casting=‘unsafe’, subok=True, copy=True)#
-
Copy of the array, cast to a specified type.
- Parameters:
-
- dtypestr or dtype
-
Typecode or data-type to which the array is cast.
- order{‘C’, ‘F’, ‘A’, ‘K’}, optional
-
Controls the memory layout order of the result.
‘C’ means C order, ‘F’ means Fortran order, ‘A’
means ‘F’ order if all the arrays are Fortran contiguous,
‘C’ order otherwise, and ‘K’ means as close to the
order the array elements appear in memory as possible.
Default is ‘K’. - casting{‘no’, ‘equiv’, ‘safe’, ‘same_kind’, ‘unsafe’}, optional
-
Controls what kind of data casting may occur. Defaults to ‘unsafe’
for backwards compatibility.-
‘no’ means the data types should not be cast at all.
-
‘equiv’ means only byte-order changes are allowed.
-
‘safe’ means only casts which can preserve values are allowed.
-
‘same_kind’ means only safe casts or casts within a kind,
like float64 to float32, are allowed. -
‘unsafe’ means any data conversions may be done.
-
- subokbool, optional
-
If True, then sub-classes will be passed-through (default), otherwise
the returned array will be forced to be a base-class array. - copybool, optional
-
By default, astype always returns a newly allocated array. If this
is set to false, and thedtype
, order, and subok
requirements are satisfied, the input array is returned instead
of a copy.
- Returns:
-
- arr_tndarray
-
Unless
copy
is False and the other conditions for returning the input
array are satisfied (see description forcopy
input parameter), arr_t
is a new array of the same shape as the input array, with dtype, order
given bydtype
, order.
- Raises:
-
- ComplexWarning
-
When casting from complex to float or int. To avoid this,
one should usea.real.astype(t)
.
Notes
Changed in version 1.17.0: Casting between a simple data type and a structured one is possible only
for “unsafe” casting. Casting to multiple fields is allowed, but
casting from multiple fields is not.Changed in version 1.9.0: Casting from numeric to string types in ‘safe’ casting mode requires
that the string dtype length is long enough to store the max
integer/float value converted.Examples
>>> x = np.array([1, 2, 2.5]) >>> x array([1. , 2. , 2.5])
>>> x.astype(int) array([1, 2, 2])
Contents
- 1 Массивы в Python
- 1.1 Списки (list)
- 1.1.1 Создание
- 1.1.2 Обращение к элементу
- 1.1.3 Обход элементов
- 1.1.4 Сравнение
- 1.1.5 Размерность
- 1.1.6 Преобразование
- 1.1.7 Матрицы
- 1.2 Массивы NumPy (Ndarray)
- 1.2.1 Создание
- 1.2.2 Тип значения элементов
- 1.2.3 Обращение к элементам
- 1.2.4 Атрибуты класса Ndarray
- 1.2.5 Изменение размерности
- 1.1 Списки (list)
В Python нет встроенного типа «массив», но вместо него можно использовать встроенный тип «список» (list). Также при использовании библиотеки NumPy можно создавать объект типа «массив» (Ndarray). Далее о каждом из этих двух вариантов подробнее.
Списки (list)
Список представляет собой тип, который может хранить любое количество элементов разных типов. Создать список в Python можно несколькими способами:
Создание
- Создание пустого списка:
names = []
names = list()
- Создание списка с элементами:
names = ['Иван', 'Женя', 'Ольга']
- Создание списка на основе другого списка:
names = ['Иван', 'Женя', 'Ольга'] new_names = list(names)
- Создание списка повторением какого-либо элемента или другого списка:
names = ['Иван', 'Женя', 'Ольга'] new_names = names * 2
- Создание списка с помощью конструкции range():
numbers = list(range(10))
Функция range(10) возвращает числа от 0 до 9, на основе которых создаётся новый список.
Обращение к элементу
Обращение к элементу списка производится по индексу элемента:
names[0]
Индексы элементов начинаются с нулевого, то есть первый элемент списка имеет индекс «0», а второй — «1».
Обход элементов
Элементы списка можно обходить циклами for и while:
for name in names: print(name)
Сравнение
Списки можно сравнивать между собой. Для того, чтобы два списка считались равными, они должны иметь одинаковый состав. К примеру, следующие два списка будут равны, не смотря на разные способы их создания:
list1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] list2 = list(range(10))
Размерность
Список в Python может быть как одномерным, так и многомерным. Выше были приведены примеры одномерных списков. Чтобы список был многомерным, например, двухмерным, каждый элемент списка должен представлять собой другой список:
names = [['Иван', 19], ['Женя', 20], ['Ольга', 21]]
В данном примере список состоит из трёх списков, каждый из которых содержит имя и возраст. Аналогично можно создавать списки с большим количеством измерений — с большим количеством уровней вложенности.
Для получения элемента многомерного списка, нужно указывать столько индексов, сколько измерений необходимо использовать для описания элемента:
names = [['Иван', 19], ['Женя', 20], ['Ольга', 21]] names[1][0]
Преобразование
Двумерный список можно преобразовать в словарь с парами «ключ-значение»:
names = [['Иван', 19], ['Женя', 20], ['Ольга', 21]] new_dict = dict(names)
Матрицы
Двумерный список является матрицей, которую визуально можно представить в следующем виде:
В данном примере переменная А содержит двумерный список, т.е. список списков, каждый из которых состоит из трёх элементов. Тип list в Python не поддерживает работу со списками как с матрицами, но, тем не менее, позволяет матрицы хранить.
Массивы NumPy (Ndarray)
Создание
Для использования класса Ndarray предварительно необходимо импортировать библиотеку numpy:
import numpy as np
Для создания массива используется функция модуля numpy — array():
import numpy as np new_array = np.array(['Иван', 'Женя', 'Ольга'])
В первый параметр функции array() передаётся список, поэтому способов создания столько же, сколько способов создания списков. При передаче в параметр многомерного списка будет создан многомерный массив:
import numpy as np new_array = np.array([['Иван', 19], ['Женя', 20], ['Ольга', 21]])
Тип значения элементов
В данном примере элементы массива были приведены к строковому типу, так как каждый список главного списка содержал строковое значение. Тип значения элементов массива можно переопределять при создании массива, указывая его вторым параметром функции array():
import numpy as np new_array = np.array([['Иван', 19], ['Женя', 20], ['Ольга', 21]], dtype=np.str)
Обращение к элементам
Обращение к элементам массива Ndarray производится аналогично получение элемента в многомерном списке.
Атрибуты класса Ndarray
Далее рассмотрим атрибуты класса Ndarray:
- ndim — число измерений (осей) массива;
- shape — размерность массива. Это tuple, содержащий натуральные числа (n, m) — длины массива по каждой оси (n — высота, m — ширина). Число элементов кортежа shape равно ndim.
- size — количество элементов в массиве, равно произведению всех элементов атрибута shape;
- dtype — тип элементов массива. NumPy предоставляет возможность использовать как встроенные типы, например: bool_, character, int8, int16, int32, int64, float8, float16, float32, float64, complex64, object_, так и собственные типы данных, в том числе и составные;
- itemsize — размер каждого элемента массива в байтах;
- data — буфер, содержащий фактические элементы массива. Обычно не нужно использовать этот атрибут, так как обращаться к элементам массива проще всего с помощью индексов.
Изменение размерности
Размерность массива darray в Python можно изменять методом reshape():
import numpy as np new_array = np.array([['Иван', 19], ['Женя', 20], ['Ольга', 21]], dtype=np.str) new_array.reshape(2, 3)
При этом количество элементов должно позволять это сделать, т.е. произведение элементов атрибута shape до и после изменения размера должно быть одинаковым. К примеру, нельзя изменить размерность массива с (3, 4) на (2, 5), но можно изменить её на (2, 6).