Індексування масивом цілих чисел
Свайпніть щоб показати меню
Окрім базового індексування, де використовується одне ціле число як індекс, NumPy також дозволяє використовувати цілий одновимірний масив цілих чисел (також можливий список цілих чисел) для індексування.
Індексування масивом цілих чисел в одновимірних масивах
Кожен елемент масиву цілих чисел, який використовується для індексування, розглядається як індекс, тому, наприклад, array[[0, 1, 3]] отримує елементи з індексами 0, 1 та 3 у вигляді одновимірного масиву, якщо array є одновимірним масивом. Для індексування також можна використовувати масиви NumPy, але це робить код більш незручним.
12345678import numpy as np array = np.array([23, 41, 7, 80, 3]) # Retrieving elements at indices 0, 1 and 3 print(array[[0, 1, 3]]) # Retrieving elements at indices 1, -1 and 2 in this order print(array[[1, -1, 2]]) # IndexError is thrown since index 5 is out of bounds print(array[[2, 5]])
Індексування масивом цілих чисел у одномірних масивах
Щодо двовимірних та багатовимірних масивів, індексування масивом цілих чисел працює так само, як і в одномірних масивах уздовж кожної осі. Якщо використовується лише один масив цілих чисел для індексування, індексування відбувається лише по одній осі (вісь 0). Якщо використовуються два масиви, розділені комою, індексування відбувається по обох осях (вісь 0 та вісь 1).
Індексування лише по осі 0 за допомогою масиву цілих чисел повертає двовимірний масив. При доступі до елементів через таке індексування, вони групуються у новий масив. Цей новий масив складається з одновимірних масивів, і таке групування збільшує розмірність на одну, утворюючи двовимірний масив.
Індексування по осі 0 та осі 1 за допомогою двох масивів цілих чисел повертає одновимірний масив.
Усі масиви цілих чисел, що використовуються для кожної з осей, повинні мати однакову форму.
123456789101112131415import numpy as np array_2d = np.array([ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]) # Retrieving first and the third row print(array_2d[[0, 2]]) # Retrieving the main diagonal elements print(array_2d[[0, 1, 2], [0, 1, 2]]) # Retrieving the first and third element of the second row print(array_2d[1, [0, 2]]) # IndexError is thrown, since index 3 along axis 0 is out of bounds print(array_2d[[0, 3], [0, 1]])
Як бачите, можна також поєднувати базову індексацію цілими числами та індексацію масивом цілих чисел.
Ще раз: якщо хоча б один з індексів виходить за межі, буде згенеровано IndexError.
Щодо застосування, така індексація корисна, коли потрібно вибрати конкретні елементи, які не розташовані поруч або не мають регулярного порядку. На відміну від зрізів, які працюють з безперервними діапазонами, цей метод дозволяє обирати точно ті елементи, які потрібно отримати. Це зручно для вибірки розкиданих даних або перестановки значень у масиві.
1. Ви аналізуєте щомісячні дані про продажі (у тисячах) для п’яти продуктів. Яким буде вивід цього коду?
2. Масив temperatures представляє тижневі температури (у °C) трьох міст за понеділок, вівторок і середу. Оберіть правильний варіант для отримання температур Берліна у понеділок і вівторок, а також Мадрида у вівторок.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат