Menu
Coddy logo textTech

Индексация массивами

Урок 12 из 18 курса Основы Numpy на Coddy.

Еще одна замечательная особенность Numpy — возможность выбирать определенные индексы из массива. Поместите List внутрь квадратных скобок [] и укажите, какие индексы вы хотите выбрать: ary[indices] 

Пример 1

Извлечь 0-й, 2-й, 4-й элементы:

x = np.arange(5, 15) # np.array([5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
x[[0, 2, 4]]
>>> [5, 7, 9]

Пример 2

Извлечь первый и последний элементы (но теперь из двумерного массива)

x = np.array([[0, 1], [2, 3], [4, 5], [6, 7]])
x[[0, -1]]
>>> [[0, 1], [6, 7]]

А как насчет извлечения конкретных элементов из двумерного массива?

Мы используем ary[[Row indices], [Element indices]]

Пример 3

Извлечь первый и последний элементы из 2-й и 3-й строк

x = np.array([
	[ 0,  1,  2,  3,  4,  5],
	[ 6,  7,  8,  9, 10, 11],
	[12, 13, 14, 15, 16, 17],
	[18, 19, 20, 21, 22, 23],
])
x[[1, 1, 2, 2], [0, -1, 0, -1]]
>>> [6, 11, 12, 17]

Что произошло?

Numpy смотрит на соответствующий индекс каждого списка внутри скобок [] и возвращает элемент:

x[[1, 1, 2, 2], [0, -1, 0, -1]]

  • x[1, 0]  # --> 6
  • x[1, -1] # --> 11
  • x[2, 0]  # --> 12
  • x[2, -1] # --> 17

Как получить первый и последний индекс из всех строк?

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

challenge icon

Задание

Легко

Дан двумерный массив ary, извлеките все числа, делящиеся на пять без остатка (0, 5, 10, ...), используя методы, изученные в этом уроке.

Попробуйте сами

import numpy as np
'''
ary looks like:
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]])
'''
ary = np.arange(0, 20).reshape(4, 5)  # don't change ary
res = ary[]  # <-- Complete indices
print(str(res).replace("\n", ""))  # don't change this line

Все уроки раздела Основы Numpy