Атрибут dtypes
Атрибут dtypes класса nditer возвращает кортеж объектов типа данных
dtype для каждого операнда, участвующего в итерации. Этот атрибут
позволяет проверить, с какими типами данных работает итератор, а также
убедиться, что приведение типов выполняется корректно. Атрибут доступен
только для чтения и возвращает копию внутреннего состояния.
Синтаксис
iterator.dtypes
Атрибут не принимает параметров и возвращает кортеж из объектов
numpy.dtype, соответствующих каждому операнду в том порядке,
в котором они были переданы в конструктор nditer.
Пример
Создадим итератор для массива целых чисел и проверим типы данных:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
it = np.nditer(arr)
print(it.dtypes)
Результат выполнения кода:
(dtype('int64'),)
Пример
Итератор для двух массивов с разными типами данных:
import numpy as np
arr1 = np.array([1, 2, 3], dtype=np.int32)
arr2 = np.array([1.5, 2.5, 3.5], dtype=np.float64)
it = np.nditer([arr1, arr2])
print(it.dtypes)
Результат выполнения кода:
(dtype('int32'), dtype('float64'))
Пример
Использование атрибута для контроля приведения типов при записи:
import numpy as np
arr = np.array([1, 2, 3, 4, 5], dtype=np.float32)
out = np.zeros_like(arr, dtype=np.int32)
it = np.nditer([arr, out], op_flags=[['readonly'], ['writeonly']])
for x, y in it:
y[...] = x
print(out)
print(it.dtypes)
Результат выполнения кода:
[1 2 3 4 5]
(dtype('float32'), dtype('int32'))
Обратите внимание, что данные из float32 были приведены к int32
при записи в выходной массив.
Пример
Проверка типов данных при использовании внешнего цикла:
import numpy as np
arr = np.array([1.2, 2.3, 3.4, 4.5, 5.6])
it = np.nditer(arr, flags=['external_loop'])
print(it.dtypes)
Результат выполнения кода:
(dtype('float64'),)
Смотрите также
-
класс
nditer,
который предоставляет эффективный многомерный итератор -
метод
iternext,
который переключает итератор на следующий шаг -
метод
enable_external_loop,
который включает внешний цикл в итераторе -
атрибут
operands,
который возвращает кортеж операндов итератора