Індексування масивом цілих чисел
Свайпніть щоб показати меню
Окрім базової індексації, коли використовується ціле число як окремий індекс, 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) трьох міст за понеділок, вівторок і середу. Оберіть правильний варіант для отримання температур у Берліні в понеділок і вівторок, а також у Мадриді у вівторок.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат