Українська
Інструменти та масиви NumPy
Інструменти та відтворюваність
NumPy надає багатовимірні числові масиви та операції над ними; pandas – таблиці з підписаними стовпцями й рядками; Matplotlib – засоби побудови графіків. Офіційні початкові посібники: https://numpy.org/doc/stable/user/absolute_beginners.html, https://pandas.pydata.org/docs/user_guide/10min.html, https://matplotlib.org/stable/users/explain/quick_start.html. Ці бібліотеки не замінюють перевірку змісту даних: правильний виклик mean не виправить суміш метрів і сантиметрів у стовпці.
Створіть окремий проєкт із Python 3.14 і додайте залежності до його середовища. У терміналі PyCharm переконайтеся, що команда стосується саме проєктного інтерпретатора. Для проєкту uv:
powershell
uv add numpy pandas matplotlib
uv add --dev pytest
uv run python -c "import numpy; print(numpy.__version__)"Для середовища venv еквівалентне встановлення виконується через python -m pip install numpy pandas matplotlib pytest. Команди запуску далі записані як python file.py; у проєкті uv використовуйте uv run python file.py. Зафіксуйте залежності та версію Python, збережіть початковий CSV і текст програми в Git. Файли середовища й тимчасові зображення до репозиторію не додають.
У прикладах використовуємо тільки синтетичні навчальні набори. Вони наведені безпосередньо в коді або як текст CSV, тому інша людина може відтворити підсумки без зовнішнього сайту чи облікового запису. Якщо файл змінюється, старий звіт не повинен мовчки перезаписуватися: спочатку визначте каталог результатів і правила іменування. Не називайте власні модулі numpy.py або pandas.py, щоб не затінити встановлену бібліотеку.
Масив ndarray: значення, тип і форма
Масив (array) ndarray зберігає елементи з одним dtype. Атрибут shape є кортежем довжин осей, ndim – кількістю осей, size – загальною кількістю елементів. Одновимірний масив має форму (n,), таблиця – (рядки, стовпці). Форма (n, 1) не тотожна (n,): перша має дві осі, що важливо для обчислень.
py
import numpy as np
values = np.array([[10, 20, 30], [12, 22, 32]], dtype=float)
print(values.shape, values.ndim, values.size)
print(values.dtype)
print(values[1, 2])Результат: (2, 3) 2 6, float64, 32.0. У вкладеному списку звернення мало б вигляд items[1][2]; масив приймає індекси осей у квадратних дужках через кому. Всі рядки навчальної матриці мають однакову довжину. Нерівні вкладені списки не слід намагатися приховати довільним dtype=object – це вже інша модель.
Функції zeros і ones створюють масиви заданої форми, arange генерує значення з кроком, а linspace – задану кількість точок між межами. Для дробового кроку кількість елементів arange може залежати від двійкового округлення; коли важлива кількість точок і включення кінця інтервалу, обирайте linspace.
py
import numpy as np
print(np.zeros((2, 3), dtype=int))
print(np.arange(1, 7).reshape(2, 3))
print(np.linspace(0, 1, 5))Результат:
[[0 0 0]
[0 0 0]]
[[1 2 3]
[4 5 6]]
[0. 0.25 0.5 0.75 1. ]reshape зберігає кількість елементів: шість значень можна подати як (2, 3), але не (2, 4). Одну довжину дозволено вказати як −1, щоб бібліотека обчислила її. Зміна форми не обов’язково створює копію; якщо незалежність даних є частиною контракту, викличте copy явно і перевірте форму після перетворення.
Вибір dtype та похибки
Тип int64 має обмежений діапазон, на відміну від довільно точного Python int. Тип float64 представляє наближені дійсні значення. Масив із рядками та числами може перетворити числа на текст, якщо покластися лише на автоматичне визначення типу. На межі програми потрібно явно визначити очікувані стовпці та перетворення.
Для грошових підсумків зручно зберігати цілі копійки, перевіряючи допустимий діапазон, а не додавати двійкові дроби. Для вимірювань оберіть одиницю та точність. np.isfinite виключає NaN та нескінченності; результат звичайного ділення на нуль не завжди є Python-винятком і може бути нескінченністю з попередженням. Не приглушуйте попередження до з’ясування причини.