Учебник по NumPy

ГЛАВНАЯ Введение в NumPy Начало работы с NumPy NumPy Создание массивов Индексация массива NumPy Нарезка массива NumPy Типы данных NumPy Копирование NumPy против просмотра Форма массива NumPy Изменение формы массива NumPy Итерация массива NumPy Объединение массивов NumPy Разделение массива NumPy Поиск массива NumPy Сортировка массива NumPy Фильтр массива NumPy

NumPy Случайный

Случайное вступление Распределение данных Случайная перестановка Морской модуль Нормальное распределение Биномиальное распределение Распределение рыбы Равномерное распределение Логистическая дистрибуция Полиномиальное распределение Экспоненциальное распределение Распределение площади Хи Рэлеевское распределение Распределение Парето Распределение Zipf

NumPy ufunc

Введение ufunc Создать функцию ufunc Простая арифметика ufunc Округление десятичных знаков Журналы UFUNC ufunc Суммирование продукты ufunc Отличия ufunc ufunc Поиск LCM ufunc Поиск НОД ufunc Тригонометрический ufunc Гиперболический ufunc набор операций

Викторина/Упражнения

Викторина NumPy NumPy-упражнения

Итерация массива NumPy


Итерация массивов

Итерация означает просмотр элементов один за другим.

Поскольку мы имеем дело с многомерными массивами в numpy, мы можем сделать это, используя базовый forцикл python.

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

Пример

Повторите элементы следующего одномерного массива:

import numpy as np

arr = np.array([1, 2, 3])

for x in arr:
  print(x)

Итерация двумерных массивов

В двумерном массиве он будет проходить через все строки.

Пример

Повторите элементы следующего двумерного массива:

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

for x in arr:
  print(x)

Если мы повторяем массив n -D, он будет проходить n-1-е измерение одно за другим.

Чтобы вернуть фактические значения, скаляры, мы должны перебрать массивы в каждом измерении.

Пример

Итерация по каждому скалярному элементу двумерного массива:

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

for x in arr:
  for y in x:
    print(y)


Итерация трехмерных массивов

В трехмерном массиве он пройдет через все двумерные массивы.

Пример

Повторите элементы следующего трехмерного массива:

import numpy as np

arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])

for x in arr:
  print(x)

Чтобы вернуть фактические значения, скаляры, мы должны перебрать массивы в каждом измерении.

Пример

Итерация до скаляров:

import numpy as np

arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])

for x in arr:
  for y in x:
    for z in y:
      print(z)

Перебор массивов с помощью nditer()

Эта функция nditer()представляет собой вспомогательную функцию, которую можно использовать как в самых простых, так и в очень сложных итерациях. Он решает некоторые основные проблемы, с которыми мы сталкиваемся в итерации, давайте рассмотрим его на примерах.

Итерация по каждому скалярному элементу

В базовых forциклах, перебирая каждый скаляр массива, нам нужно использовать n for циклов, которые может быть сложно написать для массивов с очень большой размерностью.

Пример

Переберите следующий трехмерный массив:

import numpy as np

arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])

for x in np.nditer(arr):
  print(x)

Итерация массива с различными типами данных

Мы можем использовать op_dtypesаргумент и передать ему ожидаемый тип данных, чтобы изменить тип данных элементов во время итерации.

NumPy не изменяет тип данных элемента на месте (где элемент находится в массиве), поэтому для выполнения этого действия ему требуется дополнительное пространство, это дополнительное пространство называется буфером, и чтобы включить его nditer(), мы передаем flags=['buffered'].

Пример

Итерация по массиву в виде строки:

import numpy as np

arr = np.array([1, 2, 3])

for x in np.nditer(arr, flags=['buffered'], op_dtypes=['S']):
  print(x)

Итерация с разным размером шага

Мы можем использовать фильтрацию и последующую итерацию.

Пример

Перебрать каждый скалярный элемент 2D-массива, пропуская 1 элемент:

import numpy as np

arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])

for x in np.nditer(arr[:, ::2]):
  print(x)

Пронумерованная итерация с использованием ndenumerate()

Перечисление означает указание порядкового номера чего-то одного за другим.

Иногда нам требуется соответствующий индекс элемента во время итерации, ndenumerate()метод может использоваться для этих случаев использования.

Пример

Перечислить следующие элементы одномерных массивов:

import numpy as np

arr = np.array([1, 2, 3])

for idx, x in np.ndenumerate(arr):
  print(idx, x)

Пример

Перечислить следующие элементы 2D-массива:

import numpy as np

arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])

for idx, x in np.ndenumerate(arr):
  print(idx, x)