РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
524 of 541 menu

Атрибут operands

Атрибут operands класса nditer возвращает кортеж массивов NumPy, которые были переданы итератору при его создании. Этот атрибут позволяет получить прямой доступ к операндам внутри цикла итерации, что особенно полезно при работе с несколькими массивами одновременно или при необходимости обратиться к исходным данным после начала итерации.

Синтаксис

nditer.operands

Атрибут доступен только для чтения и возвращает кортеж массивов в том порядке, в котором они были переданы в конструктор nditer. Если итератор был создан с одним массивом, возвращается кортеж из одного элемента.

Пример

Давайте создадим итератор для одного массива и получим доступ к операнду:

import numpy as np arr = np.array([1, 2, 3, 4, 5]) it = np.nditer(arr) operands = it.operands print(operands) print(type(operands))

Результат выполнения кода:

(array([1, 2, 3, 4, 5]),) <class 'tuple'>

Пример

Используем атрибут operands для доступа к нескольким массивам внутри цикла итерации:

import numpy as np arr1 = np.array([1, 2, 3, 4]) arr2 = np.array([10, 20, 30, 40]) it = np.nditer([arr1, arr2]) for x, y in it: print(f"{x} + {y} = {x + y}") operands = it.operands print("Original arrays:", operands)

Результат выполнения кода:

1 + 10 = 11 2 + 20 = 22 3 + 30 = 33 4 + 40 = 44 Original arrays: (array([1, 2, 3, 4]), array([10, 20, 30, 40]))

Пример

Атрибут operands возвращает ссылки на исходные массивы, поэтому изменения, сделанные через операнды, отражаются на оригинальных данных:

import numpy as np arr = np.array([1, 2, 3, 4, 5]) it = np.nditer(arr, op_flags=['readwrite']) for x in it: x[...] = x * 2 print("Modified array:", arr) print("Operand from it:", it.operands[0])

Результат выполнения кода:

Modified array: [2 4 6 8 10] Operand from it: [2 4 6 8 10]

Пример

Используем атрибут operands для проверки типов и размерностей массивов внутри итератора:

import numpy as np arr2d = np.array([[1, 2, 3], [4, 5, 6]]) arr1d = np.array([10, 20, 30]) it = np.nditer([arr2d, arr1d]) operands = it.operands for i, arr in enumerate(operands): print(f"Array {i}: shape={arr.shape}, dtype={arr.dtype}")

Результат выполнения кода:

Array 0: shape=(2, 3), dtype=int64 Array 1: shape=(3,), dtype=int64

Смотрите также

  • класс nditer,
    который представляет эффективный итератор для обхода массивов
  • метод iternext,
    который перемещает итератор на следующий элемент
  • метод reset,
    который сбрасывает итератор в начальное состояние
  • атрибут dtypes,
    который возвращает кортеж типов данных операндов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить