NumPy Tutorials

NumPy N-мерные массивы: Полное руководство

Spread the love

NumPy является краеугольным камнем научных вычислений в Python, и его мощь во многом обусловлена его N-мерным объектом массива, ndarray. Освоение ndarrays является необходимым условием для эффективного использования NumPy. Это руководство представляет собой всестороннее введение в ndarrays, охватывающее их создание, атрибуты и основные операции.

Содержание

Определение Ndarray

NumPy ndarray (N-мерный массив) представляет собой однородный, многомерный контейнер, содержащий элементы одного типа и размера. Представьте его как высоко оптимизированную, сложную версию списка Python, способную обрабатывать данные в нескольких измерениях (1D, 2D, 3D и выше). В отличие от списков Python, которые могут содержать элементы различных типов данных, ndarrays обеспечивают однородность типов, что приводит к значительному увеличению производительности. Эта однородность позволяет выполнять векторизованные операции — применять операции ко всему массиву одновременно, а не поэлементно, что значительно повышает скорость.

Основные характеристики ndarray:

  • Однородность: Все элементы имеют один и тот же тип данных.
  • Многомерность: Представляет данные в различных измерениях (1D векторы, 2D матрицы, 3D тензоры и т.д.).
  • Фиксированный размер: Размер массива фиксируется при создании, и изменение размера обычно включает создание нового массива.
  • Векторизованные операции: Поддерживает эффективные поэлементные и операции на уровне массива.
  • Эффективность памяти: Хранит данные в смежных блоках памяти, повышая производительность.

Создание Ndarray

Создание ndarrays осуществляется с помощью функций NumPy:


import numpy as np

# Из списка
arr_1d = np.array([1, 2, 3, 4, 5])
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])

# С помощью специализированных функций
arr_zeros = np.zeros((2, 3))  # Массив нулей
arr_ones = np.ones((3, 2))   # Массив единиц
arr_arange = np.arange(10)    # Последовательность чисел
arr_linspace = np.linspace(0, 1, 5) # Равномерно распределенные числа
arr_random = np.random.rand(2, 2) # Случайные числа

print(arr_1d)
print(arr_2d)
print(arr_zeros)
print(arr_ones)
print(arr_arange)
print(arr_linspace)
print(arr_random)

Атрибуты Ndarray

Объекты Ndarray предлагают несколько важных атрибутов, предоставляющих информацию об их форме, типе данных, размере и многом другом. Понимание этих атрибутов является ключом к эффективной обработке ndarray.

  • ndim: Количество измерений массива (осей).
  • shape: Кортеж, указывающий размер массива вдоль каждого измерения (например, (3, 4) для матрицы 3×4).
  • size: Общее количество элементов.
  • dtype: Тип данных элементов (например, int32, float64, bool).
  • itemsize: Размер (в байтах) каждого элемента.
  • nbytes: Общий размер (в байтах) массива (itemsize * size).

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

print("Количество измерений:", arr.ndim)
print("Форма:", arr.shape)
print("Размер:", arr.size)
print("Тип данных:", arr.dtype)
print("Размер элемента:", arr.itemsize)
print("Общее количество байт:", arr.nbytes)

Основные операции с Ndarray

NumPy предоставляет эффективные поэлементные и операции на уровне массива. Простые арифметические операции (+, -, *, /, //, %, **) векторизованы:


import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

print("Сложение:", arr1 + arr2)
print("Вычитание:", arr1 - arr2)
print("Умножение:", arr1 * arr2)
print("Деление:", arr1 / arr2)

Более сложные операции (такие как умножение матриц, скалярное произведение и т.д.) также легко доступны.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *