Комбинированная индексация
Для реализации еще более сложных операций «прихотливую» индексацию можно использовать совместно с другими схемами индексации:
print(X)
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
Можно применять совместно «прихотливые» и простые индексы:
X[2, [2, 0, 1]]
Out: array([10, 8, 9])
Можно также использовать совместно «прихотливые» индексы и срезы:
X[1:, [2, 0, 1]]
Out: array([[ 6, 4, 5],
[10, 8, 9]])
Все эти варианты индексации вместе обеспечивают набор чрезвычайно гибких операций по доступу к значениям массивов и их изменению.
Пример задачи: Выборка случайных точек
Частая сфера применения «прихотливой» индексации – выборка подмножеств строк из матрицы. Пусть у нас имеется матрица размером N на D, представляющая N точек в D измерениях, например, следующие точки, полученные из двумерного нормального распределения:
С помощью инструментов рисования графиков можно визуализировать эти точки в виде диаграммы рассеяния (рис. 1):
Рис. 1. Нормально распределенные точки
Воспользуемся «прихотливой» индексацией для выборки 20 случайных точек. Мы сделаем это с помощью выбора предварительно 20 случайных индексов без повторов и воспользуемся этими индексами для выбора части исходного массива:
Чтобы посмотреть, какие точки были выбраны, нарисуем поверх первой диаграммы большие круги в местах расположения выбранных точек (рис. 2).
Рис. 2. Случайно выбранные точки
Подобная стратегия часто используется для быстрого секционирования наборов данных, часто требуемого при разделении на обучающую/тестовую последовательности для проверки статистических моделей, а также в выборочных методах ответа на статистические вопросы.
Достарыңызбен бөлісу: |