Итерация массивов NumPy
- Предыдущая страница Перестройка массивов NumPy
- Следующая страница Соединение массивов NumPy
Итерация массива
Итерация означает итерирование элементов по одному.
Когда мы работаем с много мерными массивами в numpy, мы можем использовать базовый цикл for в python для выполнения этой операции.
Если мы итерируем 1-D массив, он будет итерировать каждый элемент по одному.
Пример
Итерировать элементы следующего одномерного массива:
import numpy as np arr = np.array([1, 2, 3]) for x in arr: print(x)
Итерировать 2-D массив
В 2-D массиве он будет итерировать все строки.
Пример
Итерировать элементы следующего двумерного массива:
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) for x in arr: print(x)
Если мы итерируем n-D массив, он будет итерировать по одному измерению за раз.
Чтобы вернуть фактическое значение, скаляр,我们必须 итерировать массивы в каждом измерении.
Пример
Итерировать каждый скалярный элемент 2-D массива:
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) for x in arr: for y in x: print(y)
Итерировать 3-D массив
В 3-D массиве он будет итерировать все 2-D массивы.
Пример
Итерировать элементы следующего 3-D массива:
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
Цикл, для массивов с высокими измерениями может быть трудно написать.
Пример
Пройдемся по следующему 3-D массиву:
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()
Метод.
Пример
Перечислите элементы следующего 1D массива:
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)
- Предыдущая страница Перестройка массивов NumPy
- Следующая страница Соединение массивов NumPy