В NumPy индексация и срезы играют ключевую роль в манипуляциях с данными. Правильное использование этих инструментов делает обработку данных более эффективной.
Как и в стандартных списках Python, индексация в NumPy начинается с 0.
Одномерные массивы:
import numpy as np
a = np.array([0, 1, 2, 3, 4])
print(a[0]) # 0
print(a[-1]) # 4
Многомерные массивы:
import numpy as np
b = np.array([[1,2,3], [4,5,6], [7,8,9]])
print(b[1, 2]) # 6 (вторая строка, третий столбец)
Срезы позволяют получать подмассивы, используя синтаксис [start:stop:step]
.
Одномерные массивы:
import numpy as np
a = np.array([0, 1, 2, 3, 4, 5])
print(a[1:4]) # [1 2 3]
print(a[:3]) # [0 1 2]
print(a[2:]) # [2 3 4 5]
print(a[::2]) # [0 2 4]
Многомерные массивы:
import numpy as np
b = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
print(b[:2, 1:3])
#[[2 3]
# [6 7]]
Стоит заметить, что при такой индексации создается представление исходного массива, а не новый массив. То есть, изменяя элементы подмассива, вы изменяете и исходный массив.
Булева индексация позволяет выбирать элементы массива на основе условий.
import numpy as np
a = np.array([1, 2, 3, 4, 5])
print(a[a > 3]) # [4 5]
Если нужно применить несколько условий, используйте операторы &
(и) и |
(или).
import numpy as np
a = np.array([1, 2, 3, 4, 5])
print(a[(a > 2) & (a < 5)]) # [3 4]
Булеву индексацию также можно использовать для присваивания новых значений элементам, удовлетворяющим условиям.
import numpy as np
a = np.array([1, 2, 3, 4, 5])
a[a > 3] = 99
print(a) # [ 1 2 3 99 99]
Правильное использование индексации и срезов в NumPy существенно облегчает работу с данными. Эти методы предоставляют гибкий и мощный инструмент для обработки и анализа информации в массивах различной размерности.
Содержание: