Вступ
Уявіть, що у вас на телефоні є список улюблених пісень. Цей список відтворення — це список, у якому кожна пісня розміщена в певному порядку. Ви можете відтворити першу пісню, перейти до другої, перейти до п’ятої і так далі. Цей список відтворення дуже схожий на масив у комп’ютерному програмуванні.
Масиви є однією з найбільш фундаментальних і широко використовуваних структур даних.
По суті, масив — це структурований спосіб зберігання кількох елементів (наприклад, чисел, символів або навіть інших масивів) у певному порядку, і ви можете швидко отримати доступ, змінити чи видалити будь-який елемент, якщо знаєте його позицію (індекс).
У цьому посібнику ми дамо вам вичерпний огляд структури даних масиву. Перш за все, ми розглянемо, що таке масиви та які їхні основні характеристики. Потім ми перейдемо у світ Python, досліджуючи, як масиви реалізуються, маніпулюють і застосовуються в реальних сценаріях.
Розуміння структури даних масиву
Масиви належать до найстаріших і найфундаментальніших структур даних, які використовуються в інформатиці та програмуванні. Їх простота в поєднанні з їх ефективністю в певних операціях робить їх основною темою для всіх, хто заглиблюється в сферу управління та маніпулювання даними.
Масив — це набір елементів, зазвичай з одного типу, що зберігається в безперервні місця пам'яті.
Це безперервне зберігання дозволяє масивам забезпечувати постійний доступ до будь-якого елемента з урахуванням його індексу. Кожен елемент у масиві називається an елемент, а позиція елемента в масиві визначається його індекс, що зазвичай починається з нуля.
Наприклад, розглянемо масив цілих чисел: [10, 20, 30, 40, 50]
. Ось елемент 20
має індекс 1
:
Є кілька Переваги використання масивів для зберігання наших даних. Наприклад, завдяки своїй структурі пам’яті масиви дозволяють O (1) (постійна) складність часу при доступі до елемента за його індексом. Це особливо корисно, коли нам потрібен довільний доступ до елементів. Крім того, масиви зберігаються в безперервні місця пам'яті, що може призвести до кращої локалізації кешу та загального підвищення продуктивності певних операцій. Ще одна помітна перевага використання масивів полягає в тому, що оскільки масиви мають фіксований розмір після оголошення, легше керувати пам’яттю та уникнути неочікуваних переповнень або помилок браку пам’яті.
примітки: масиви особливо корисні в сценаріях, де Розмір колекції відомий заздалегідь і залишається постійним, або де довільний доступ частіше, ніж вставки та видалення.
З іншого боку, масиви мають власний набір недоліки. Одним із основних обмежень традиційних масивів є їх фіксований розмір. Після створення масиву його розмір не можна змінити. Це може призвести до таких проблем, як зайва пам’ять (якщо масив завеликий) або необхідність зміни розміру (якщо масив замалий). Крім того, вставлення або видалення елемента в середині масиву вимагає зміщення елементів, що призводить до О (п) трудомісткість цих операцій.
Підводячи підсумок, давайте проілюструємо основні характеристики масивів на прикладі списку відтворення пісень із початку цього посібника. Масив — це структура даних, яка:
-
Індексується: Подібно до того, як кожна пісня у вашому списку відтворення має номер (1, 2, 3, …), кожен елемент у масиві має індекс. Але в більшості мов програмування індекс починається з 0. Отже, перший елемент має індекс 0, другий — 1 і так далі.
-
Має фіксований розмір: Коли ви створюєте список відтворення, скажімо, для 10 пісень, ви не можете додати 11-ту пісню, попередньо не видаливши одну. Так само масиви мають фіксований розмір. Після створення масиву певного розміру ви не можете додати більше елементів, ніж його обсяг.
-
Є однорідним: усі пісні у вашому списку відтворення є музичними треками. Подібним чином усі елементи в масиві мають один тип. Якщо у вас є масив цілих чисел, ви не можете раптом зберегти в ньому текстовий рядок.
-
Має прямий доступ: Якщо ви хочете прослухати сьому пісню у своєму списку відтворення, ви можете перейти безпосередньо до неї. Так само з масивами ви можете миттєво отримати доступ до будь-якого елемента, якщо знаєте його індекс.
-
Безперервна пам'ять: Це трохи технічніше. Коли масив створюється в пам'яті комп'ютера, він займає безперервний блок пам'яті. Подумайте про це як про ряд сусідніх шафок у школі. Кожна шафка стоїть поруч, без проміжків між ними.
Python і масиви
Python, відомий своєю гнучкістю та простотою використання, пропонує кілька способів роботи з масивами. Хоча Python не має рідної структури даних масиву, як деякі інші мови, він надає потужні альтернативи, які можуть функціонувати подібним чином і навіть пропонувати розширені можливості.
На перший погляд, Список Python може здатися синонімом масиву, але є тонкі відмінності та нюанси, які слід враховувати:
список | масив |
---|---|
Вбудована структура даних Python | Не рідні для Python – вони походять із модуля `array` |
Динамічний розмір | Фіксований (заздалегідь визначений) розмір |
Може зберігати елементи різних типів даних | Тримайте предмети одного типу |
Надайте низку вбудованих методів маніпулювання | Потрібно імпортувати зовнішні модулі |
O(1) часова складність для операцій доступу | O(1) часова складність для операцій доступу |
Споживайте більше пам'яті | Більш ефективна пам'ять |
Дивлячись на цю таблицю, природно виникає запитання – «Коли використовувати який?». Що ж, якщо вам потрібна колекція, яка може динамічно зростати або звужуватися і може містити змішані типи даних, список Python — це ваш шлях. Однак для сценаріїв, які потребують більш ефективного використання пам’яті колекції з елементами того самого типу, ви можете розглянути можливість використання Python array
модуль або зовнішні бібліотеки, такі як NumPy.
Команда масив Модуль на Python
Коли більшість розробників думають про масиви в Python, вони часто думають про списки. Однак Python пропонує більш спеціалізовану структуру масиву через свій вбудований array
модуль. Цей модуль забезпечує ефективне зберігання основних типів даних у стилі C у Python.
Хоча списки Python неймовірно універсальні та можуть зберігати будь-які типи об’єктів, іноді вони можуть бути надмірними, особливо коли вам потрібно зберігати лише колекцію основних типів даних, як-от цілі чи числа з плаваючою точкою. The array
Модуль забезпечує спосіб створення масивів, які є більш ефективними для пам’яті, ніж списки для певних типів даних.
Створення масиву
Для використання array
модуля, вам спочатку потрібно імпортувати його:
from array import array
Після імпорту ви можете створити масив за допомогою array()
конструктор:
arr = array('i', [1, 2, 3, 4, 5])
print(arr)
Ось тут 'i'
аргумент вказує, що масив буде зберігати знак цілих чисел. Існує кілька інших кодів типів, наприклад 'f'
для поплавців і 'd'
для парних.
Доступ і зміна елементів
Ви можете отримувати доступ до елементів масиву та змінювати їх так само, як і зі списком:
print(arr[2])
А тепер давайте модифікуємо елемент, змінивши його значення на 6
:
arr[2] = 6
print(arr)
Методи масивів
Команда array
модуль надає кілька методів для роботи з масивами:
-
append()
– Додає елемент у кінець масиву:arr.append(7) print(arr)
-
extend()
– Додає повторювані елементи в кінець:arr.extend([8, 9]) print(arr)
-
pop()
– Видаляє та повертає елемент у задану позицію:arr.pop(2) print(arr)
-
remove()
: видаляє перше входження вказаного значення:arr.remove(2) print(arr)
-
reverse()
: змінює порядок масиву на зворотний:arr.reverse() print(arr)
Примітка: Існує більше методів, ніж ми перерахували тут. Зверніться до офіційна документація Python щоб переглянути список усіх доступних методів у array
модуль
У той час як array
модуль пропонує більш ефективний спосіб зберігання основних типів даних, тому важливо запам’ятати його недоліки. На відміну від списків, масиви є однорідний. Це означає, що всі елементи в масиві мають бути одного типу. Також можна тільки зберігати основні типи даних у стилі C в масивах. Якщо вам потрібно зберігати спеціальні об’єкти або інші типи Python, вам потрібно буде використовувати список або іншу структуру даних.
Масиви NumPy
NumPy, скорочення від Numerical Python, є основним пакетом для чисельних обчислень у Python. Однією з його головних особливостей є потужність Об'єкт N-вимірного масиву, який пропонує швидкі операції над масивами, зокрема математичні, логічні, маніпуляції фігурами тощо.
Масиви NumPy більш універсальні, ніж вбудовані в Python
array
модуль і є основним продуктом у наукових проектах з обробки даних і машинного навчання.
Навіщо використовувати масиви NumPy?
Перше, що спадає на думку продуктивність. Масиви NumPy реалізовані на C і забезпечують ефективне зберігання пам’яті та швидші операції завдяки оптимізованим алгоритмам і перевагам безперервного зберігання пам’яті.
Хоча вбудовані списки та масиви Python є одновимірними, масиви NumPy можуть бути багатовимірний, що робить їх ідеальними для представлення матриць або тензорів.
Ознайомтеся з нашим практичним практичним посібником із вивчення Git з передовими методами, прийнятими в галузі стандартами та включеною шпаргалкою. Припиніть гуглити команди Git і фактично вчитися це!
Нарешті, NumPy надає a великий набір функцій для роботи з цими масивами, від базових арифметичних до складних математичних операцій, зміни форми, розбиття тощо.
Примітка: Коли ви заздалегідь знаєте розмір даних, попереднє виділення пам’яті для масивів (особливо в NumPy) може призвести до покращення продуктивності.
Створення масиву NumPy
Щоб використовувати NumPy, вам спочатку потрібно встановити його (pip install numpy
), а потім імпортуйте його:
import numpy as np
Після імпорту ви можете створити масив NumPy за допомогою array()
функція:
arr = np.array([1, 2, 3, 4, 5])
print(arr)
Ви також можете створювати багатовимірні масиви:
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(matrix)
Це дасть нам:
[[1 2 3] [4 5 6] [7 8 9]]
Окрім цих основних способів створення масивів, NumPy надає нам інші розумні способи створення масивів. Одним з яких є arange()
метод. Він створює масиви з регулярно зростаючими значеннями:
arr = np.arange(10)
print(arr)
Інший – це linspace()
метод, який створює масиви з заданою кількістю елементів, рівномірно розподілених між заданими початковим і кінцевим значеннями:
even_space = np.linspace(0, 1, 5)
print(even_space)
Доступ і зміна елементів
Доступ до елементів у масиві NumPy і їх зміна є інтуїтивно зрозумілими:
print(arr[2]) arr[2] = 6
print(arr)
Практично те саме для багатовимірних масивів:
print(matrix[1, 2]) matrix[1, 2] = 10
print(matrix)
Змінить значення елемента у другому рядку (індекс 1
) і третій стовпець (індекс 2
):
[[1 2 3] [4 5 20] [7 8 9]]
Зміна форми масиву
NumPy пропонує багато функцій і методів для роботи з масивами. Наприклад, ви можете використовувати reshape()
метод до змінити форму масиву. Скажімо, у нас є простий масив:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
print("Original Array:")
print(arr)
І ми хочемо змінити його на матрицю 3×4. Все, що вам потрібно зробити, це використовувати reshape()
метод із бажаними розмірами, переданими як аргументи:
reshaped_arr = arr.reshape(3, 4)
print("Reshaped Array (3x4):")
print(reshaped_arr)
Це призведе до:
Reshaped Array (3x4):
[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]]
Матричне множення
Команда numpy.dot()
метод використовується для матричне множення. Він повертає скалярний добуток двох масивів. Для одновимірних масивів це внутрішній продукт масивів. Для 2-вимірних масивів це еквівалентно матричне множення, а для ND це a сума продукту над останньою віссю першого масиву та передостанньою віссю другого масиву.
Давайте подивимося, як це працює. Спочатку давайте обчислимо скалярний добуток двох одновимірних масивів (внутрішній добуток векторів):
import numpy as np vec1 = np.array([1, 2, 3])
vec2 = np.array([4, 5, 6])
dot_product_1d = np.dot(vec1, vec2) print("Dot product of two 1-D arrays:")
print(dot_product_1d)
Це призведе до:
Dot product of two 1-D arrays:
32
32
фактично є внутрішнім добутком двох масивів – (14 + 25 + 3*6). Далі ми можемо виконати матричне множення двох 2-D масивів:
mat1 = np.array([[1, 2], [3, 4]])
mat2 = np.array([[2, 0], [1, 3]])
matrix_product = np.dot(mat1, mat2) print("Matrix multiplication of two 2-D arrays:")
print(matrix_product)
Що дасть нам:
Matrix multiplication of two 2-D arrays:
[[ 4 6] [10 12]]
Масиви NumPy є значним кроком у порівнянні зі вбудованими списками Python і array
модуль, особливо для наукових і математичних обчислень. Їхня ефективність у поєднанні з багатою функціональністю, яку надає бібліотека NumPy, робить їх незамінним інструментом для тих, хто хоче виконувати числові операції на Python.
Висновок
Масиви, наріжний камінь інформатики та програмування, неодноразово доводили свою цінність у різних програмах і сферах. У Python ця фундаментальна структура даних через різні втілення, такі як списки, array
модуль і потужні масиви NumPy пропонують розробникам поєднання ефективності, універсальності та простоти.
У цьому посібнику ми пройшли шлях від основних концепцій масивів до їх практичного застосування в Python. Ми побачили, як масиви, завдяки своїй безперервній природі пам’яті, забезпечують швидкий час доступу, а динамічні списки Python забезпечують додатковий рівень гнучкості. Ми також заглибились у спеціалізований світ NumPy, де масиви перетворюються на потужні інструменти для чисельних обчислень.
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- PlatoData.Network Vertical Generative Ai. Додайте собі сили. Доступ тут.
- PlatoAiStream. Web3 Intelligence. Розширення знань. Доступ тут.
- ПлатонЕСГ. вуглець, CleanTech, Енергія, Навколишнє середовище, Сонячна, Поводження з відходами. Доступ тут.
- PlatoHealth. Розвідка про біотехнології та клінічні випробування. Доступ тут.
- джерело: https://stackabuse.com/guide-to-arrays-in-python/
- : має
- :є
- : ні
- :де
- $UP
- 1
- 10
- 11
- 12
- 13
- 16
- 20
- 25
- 30
- 32
- 40
- 50
- 7
- 8
- 9
- a
- МЕНЮ
- доступ
- доступ до
- через
- насправді
- додавати
- доданий
- Додатково
- Додає
- сусідній
- просування
- просунутий
- Перевага
- знову
- Оповіщення
- алгоритми
- ВСІ
- дозволяти
- дозволяє
- Також
- альтернативи
- серед
- an
- та
- Інший
- будь-який
- будь
- застосування
- прикладної
- ЕСТЬ
- аргумент
- аргументація
- масив
- AS
- запитати
- At
- доступний
- уникнути
- Вісь
- основний
- BE
- початок
- корисний
- Переваги
- крім
- Краще
- між
- Біт
- Blend
- Блокувати
- border
- приносити
- вбудований
- але
- by
- Кеш
- званий
- CAN
- не може
- можливості
- потужність
- певний
- зміна
- змінилися
- заміна
- характеристика
- символи
- Коди
- збір
- Колонка
- комбінований
- Приходити
- приходить
- складність
- всеосяжний
- обчислення
- обчислення
- обчислення
- комп'ютер
- Інформатика
- поняття
- висновок
- Вважати
- постійна
- безперервний
- наріжний камінь
- створювати
- створений
- створює
- виготовлений на замовлення
- дані
- управління даними
- наука про дані
- Структура даних
- дефолт
- певний
- бажаний
- розробників
- Відмінності
- різний
- розміри
- прямий
- безпосередньо
- do
- робить
- домени
- DOT
- Парний
- два
- динамічний
- динамічно
- кожен
- простота
- простота використання
- легше
- ефективність
- ефективний
- елемент
- елементи
- кінець
- однаково
- Еквівалент
- помилки
- особливо
- сутність
- істотний
- Навіть
- приклад
- Дослідження
- зовнішній
- факт
- ШВИДКО
- швидше
- Улюблений
- риси
- Перший
- фіксованою
- Гнучкість
- Сфокусувати
- для
- частий
- від
- функція
- функціональність
- Функції
- фундаментальний
- прогалини
- Git
- Давати
- даний
- Погляд
- Go
- Рости
- керівництво
- практичний
- Мати
- тут
- тримати
- hover
- Як
- Однак
- HTML
- HTTPS
- i
- ICON
- ідеальний
- if
- ілюструвати
- реалізовані
- імпорт
- поліпшення
- in
- включені
- У тому числі
- неймовірно
- індекс
- індексований
- вказує
- встановлювати
- екземпляр
- негайно
- в
- Вступ
- інтуїтивний
- питання
- IT
- пунктів
- ЙОГО
- стрибати
- просто
- Знати
- відомий
- мови
- великий
- останній
- шар
- макет
- вести
- провідний
- вивчення
- дозволяти
- LG
- libraries
- бібліотека
- як
- недоліки
- список
- Перераховані
- списки
- ll
- Ящик
- логічний
- подивитися
- шукати
- серія
- машина
- навчання за допомогою машини
- головний
- РОБОТИ
- Робить
- управляти
- управління
- маніпулювати
- Маніпуляція
- багато
- математичний
- Матриця
- засоби
- пам'ять
- метод
- методика
- Середній
- може бути
- mind
- змішаний
- змінювати
- Модулі
- більше
- найбільш
- багато
- множинний
- музика
- повинен
- рідний
- природа
- Необхідність
- наступний
- немає
- Помітний
- зараз
- нюанси
- номер
- номера
- нумпі
- об'єкт
- об'єкти
- займає
- виникнення
- of
- пропонувати
- Пропозиції
- часто
- найстаріший
- on
- один раз
- ONE
- тільки
- працювати
- операції
- оптимізований
- or
- порядок
- оригінал
- Інше
- наші
- з
- над
- загальний
- огляд
- власний
- пакет
- особливо
- Пройшов
- Виконувати
- продуктивність
- телефон
- plato
- Інформація про дані Платона
- PlatoData
- Play
- положення
- потужний
- Практичний
- досить
- первинний
- Product
- Програмування
- мови програмування
- проектів
- доведений
- забезпечувати
- за умови
- забезпечує
- Python
- швидко
- випадковий
- діапазон
- швидко
- Реальний світ
- царство
- послатися
- регулярно
- залишається
- запам'ятати
- видаляти
- видалення
- представляє
- Вимагається
- переробити
- переформатування
- результат
- Умови повернення
- Багаті
- кільце
- ROW
- s
- то ж
- say
- сценарії
- Школа
- наука
- науковий
- другий
- побачити
- здається
- бачив
- комплект
- кілька
- тінь
- Форма
- лист
- ПЕРЕМІЩЕННЯ
- Короткий
- сторона
- підписаний
- значний
- Аналогічно
- простий
- простота
- з
- Розмір
- невеликий
- So
- деякі
- іноді
- пісня
- спеціалізований
- конкретний
- зазначений
- Stackabuse
- стояти
- стандартів
- основний матеріал
- починається
- Крок
- Стоп
- зберігання
- зберігати
- зберігати
- рядок
- структура
- структурований
- структур
- такі
- SVG
- синонімом
- таблиця
- Приймати
- технічний
- текст
- ніж
- Що
- Команда
- світ
- їх
- Їх
- потім
- Там.
- Ці
- вони
- річ
- думати
- Мислення
- третій
- це
- через
- час
- times
- до
- занадто
- інструмент
- інструменти
- тема
- традиційний
- Перетворення
- перехід
- правда
- два
- тип
- Типи
- типово
- Unexpected
- на відміну від
- us
- використання
- використовуваний
- використання
- зазвичай
- значення
- Цінності
- різний
- Ve
- різнобічний
- Універсальність
- хотіти
- шлях..
- способи
- we
- ДОБРЕ
- Що
- коли
- який
- в той час як
- широко
- волі
- з
- без
- Work
- працює
- світ
- вартість
- б
- Ти
- вашу
- зефірнет