Индексация массива NumPy в Python
Как и в случае со списком, вы можете использовать квадратные скобки([]) для доступа к элементам массива numpy в Python.
- Индексация массива NumPy в одномерных массивах
- Индексация массива NumPy в двумерных массивах
- Индексация массива NumPy в трехмерных массивах
Индексация массива NumPy в одномерных массивах
Вдоль одной оси можно выбирать элементы с помощью индексов. Первый элемент начинается с индекса 0, второй элемент начинается с индекса 1 и так далее.
Помимо неотрицательных индексов, для поиска элементов можно использовать отрицательные индексы. Например, последний элемент имеет индекс -1, предпоследний элемент имеет индекс -2 и так далее.
В следующем примере показано, как получить доступ к элементам одномерного массива:
import numpy as np a = np.arange(0, 5) print(a) print(a[0]) print(a[1]) print(a[-1])
Выход:
[0 1 2 3 4] 0 1 4 3
В этом примере:
- a[0] возвращает первый элемент(0)
- a[1] возвращает второй элемент(1)
- a[-1] — последний элемент(4)
- a[-2] — предпоследний элемент(3)
Индексация массива NumPy в двумерных массивах
В двумерных и многомерных массивах вы можете выбирать элементы так же, как и в одномерных массивах, но для каждого измерения(или оси). Например:
import numpy as np a = np.array([ [1, 2, 3], [4, 5, 6] ]) print(a.shape) print(a[0]) # [1 2 3] print(a[1]) # [4 5 6] print(a[0, 0]) # 1 print(a[1, 0]) # 4 print(a[0, 2]) # 3 print(a[1, 2]) # 6 print(a[0, -1]) # 3 print(a[1, -1]) # 6
Выход:
(2, 3) [1 2 3] [4 5 6] 1 4 3 6 3 6
В этом примере массив numpy a имеет форму(2,3), поэтому у него две оси:
- Первая ось имеет 2 элемента(2 списка).
- Вторая ось имеет три элемента(3 числа).
Ниже объясняется, как работает индексация массива:
- a[0] возвращает первый элемент первой оси, то есть [1 2 3].
- a[1] возвращает второй элемент первой оси, то есть [4 5 6]
- a[0, 0] = 1: 0 выбирает первый элемент первой оси([1 2 3]) и первый элемент второй оси.
- a[1, 0] = 4: 1 выбирает второй элемент первой оси([4 5 6]), а 0 выбирает первый элемент второй оси.
- a[0, 2]) = 3: 0 выбирает первый элемент первой оси([1 2 3]), а 2 выбирает третий элемент второй оси.
- a[1, 2] = 6: 1 выбирает второй элемент первой оси([4 5 6]), а 2 выбирает третий элемент второй оси.
- a[0, -1] = 3: 0 выбирает первый элемент первой оси([1 2 3]), а -1 выбирает последний элемент второй оси.
- a[1, -1] = 6: 1 выбирает второй элемент первой оси([1 2 3]), а -1 выбирает последний элемент второй оси.
Индексация массива NumPy в трехмерных массивах
В следующем примере создается трехмерный массив numpy:
import numpy as np a = np.array([ [[1, 2], [3, 4], [5, 6]], [[5, 6], [7, 8], [9, 10]], ]) print(a.shape)
Выход:
(2, 3, 2)
Массив имеет три оси.
- Первая ось имеет 2 элемента(2 списка списков чисел)
- Вторая ось имеет 3 элемента(3 списка чисел)
- Третья ось имеет 2 элемента(2 числа)
Например:
import numpy as np a = np.array([ [[1, 2], [3, 4], [5, 6]], [[5, 6], [7, 8], [9, 10]], ]) print(a[0, 0, 1]) # 2
Следующее выражение возвращает 2:
a[0,0,1]
Первое число 0 выбирает первый элемент первой оси и возвращает:
[[1, 2], [3, 4], [5, 6]]
Второе число 0 выбирает первый элемент второй оси и возвращает:
[1, 2]
Третье число(1) выбирает второй элемент третьей оси, который возвращает 2.