Введение в NumPy и массивы
Что такое NumPy и зачем он нужен
NumPy (Numerical Python) — это фундаментальная библиотека для научных вычислений в Python. Она предоставляет мощные инструменты для работы с многомерными массивами и матрицами, а также широкий набор математических функций для операций над ними. NumPy является основой для многих других библиотек, таких как SciPy, pandas и scikit-learn, используемых в анализе данных, машинном обучении и других областях.
Основное преимущество NumPy заключается в его эффективности. Операции над массивами выполняются гораздо быстрее, чем аналогичные операции с использованием стандартных списков Python, благодаря оптимизированным алгоритмам и использованию векторных операций.
Обзор массивов NumPy (ndarray)
Основным объектом в NumPy является ndarray
(n-dimensional array) — это однородный многомерный массив элементов одного типа данных. В отличие от списков Python, элементы в массиве NumPy хранятся последовательно в памяти, что обеспечивает более быстрый доступ и эффективное использование памяти.
Массивы NumPy могут иметь различную размерность: одномерные (векторы), двумерные (матрицы), трехмерные и т.д. Каждый массив имеет форму (shape
), которая определяет количество элементов по каждой оси (измерению).
Важность определения количества строк в массиве
Определение количества строк в массиве NumPy — это базовая операция, необходимая для решения множества задач, таких как:
- Итерация по строкам массива.
- Выделение подмассивов.
- Проверка соответствия размеров массивов при выполнении операций.
- Предобработка данных для моделей машинного обучения.
- Статистический анализ данных.
Основные способы определения количества строк
Использование атрибута shape
Самый распространенный и эффективный способ определения количества строк в массиве NumPy — использование атрибута shape
. Атрибут shape
возвращает кортеж, содержащий размеры массива по каждому измерению. Для двумерного массива первый элемент кортежа соответствует количеству строк.
import numpy as np
def get_number_of_rows(array: np.ndarray) -> int:
"""Returns the number of rows in a NumPy array.
Args:
array: The NumPy array.
Returns:
The number of rows in the array.
"""
return array.shape[0]
# Пример использования:
data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
num_rows = get_number_of_rows(data)
print(f"Количество строк: {num_rows}") # Вывод: Количество строк: 3
Использование функции len()
для одномерных массивов
Для одномерных массивов (векторов) функция len()
возвращает количество элементов в массиве, которое в данном случае соответствует количеству строк.
import numpy as np
def get_length(array: np.ndarray) -> int:
"""Returns the length of a one-dimensional NumPy array.
Args:
array: The one-dimensional NumPy array.
Returns:
The length of the array.
"""
return len(array)
# Пример использования:
data = np.array([1, 2, 3, 4, 5])
length = get_length(data)
print(f"Длина массива: {length}") # Вывод: Длина массива: 5
Разница между shape[0]
и len(array)
Важно понимать разницу между shape[0]
и len(array)
. shape[0]
всегда возвращает размер первого измерения массива (количество строк для двумерного массива), в то время как len(array)
возвращает длину только для первого измерения. Для многомерных массивов len(array)
эквивалентен shape[0]
, но для одномерных массивов len(array)
возвращает общее количество элементов.
Определение количества строк в многомерных массивах
Применение shape
к многомерным массивам
Атрибут shape
является наиболее общим способом определения размеров массива любой размерности. Для двумерных массивов shape[0]
соответствует количеству строк, shape[1]
— количеству столбцов.
Понимание структуры shape
(строки, столбцы, и т.д.)
shape
возвращает кортеж, в котором каждый элемент соответствует размеру массива по соответствующему измерению. Например, для массива с формой (3, 4, 5)
:
shape[0]
— размер первого измерения (3).shape[1]
— размер второго измерения (4).shape[2]
— размер третьего измерения (5).
Примеры для массивов разной размерности (2D, 3D)
import numpy as np
# Двумерный массив (матрица)
data_2d = np.array([[1, 2, 3], [4, 5, 6]])
num_rows_2d = data_2d.shape[0]
print(f"Количество строк в 2D массиве: {num_rows_2d}") # Вывод: Количество строк в 2D массиве: 2
# Трехмерный массив
data_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
num_rows_3d = data_3d.shape[0]
print(f"Количество 'строк' в 3D массиве: {num_rows_3d}") # Вывод: Количество 'строк' в 3D массиве: 2
Особые случаи и распространенные ошибки
Пустые массивы и их обработка
Пустой массив NumPy может быть создан с использованием np.array([])
или np.empty()
. Для пустого массива атрибут shape
возвращает (0,)
. Важно учитывать этот случай при обработке данных, чтобы избежать ошибок.
import numpy as np
empty_array = np.array([])
if empty_array.size == 0:
print("Массив пуст")
Массивы с нулевой размерностью (скаляры)
Массивы с нулевой размерностью (скаляры) создаются, например, так: np.array(5)
. В этом случае shape
возвращает пустой кортеж ()
, а len()
вызовет ошибку. Для скаляров количество