Массивы в NumPy

Создание массивов в NumPy и типы данных

NumPy — это библиотека Python, предоставляющая поддержку для работы с большими многомерными массивами и матрицами, а также множество функций для выполнения математических операций с этими массивами.

Создание массива: numpy.array()

Когда вы создаете массив с помощью NumPy, вы фактически создаете объект ndarray.

import numpy as np

arr_1d = np.array([1, 2, 3, 4, 5])
print(arr_1d)

#[1 2 3 4 5]

Двумерные массивы:

Массивы могут быть не только одномерными. Для создания двумерного массива (или матрицы) вы можете передать список списков:

arr_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr_2d)

Вывод:

[[1 2 3]
 [4 5 6]
 [7 8 9]]

Размерности и форма массива: shape, ndim

Когда мы работаем с многомерными массивами (также известными как тензоры) в NumPy, два ключевых атрибута, которые помогут нам понять его структуру, — это shape и ndim.

shape

Атрибут shape возвращает кортеж, который описывает форму массива. Это, по сути, показывает, сколько элементов содержится в каждом измерении.

  • Для одномерного массива (вектора) shape вернет (n,), где n — это количество элементов в векторе.
  • Для двумерного массива (матрицы) shape вернет (n, m), где n — это количество строк, а m — количество столбцов.
  • Для трехмерного массива это будет (n, m, p) и так далее.

Примеры:

import numpy as np

vector = np.array([1, 2, 3, 4, 5])
print(vector.shape)  # (5,)

matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(matrix.shape)  # (3, 3)

tensor = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(tensor.shape)  # (2, 2, 2)

ndim

Атрибут ndim возвращает число, указывающее количество измерений (или "осей") массива.

  • Для одномерного массива ndim вернет 1.
  • Для двумерного массива — 2.
  • Для трехмерного — 3 и так далее.

Примеры:

import numpy as np

vector = np.array([1, 2, 3, 4, 5])
print(vector.ndim)  # 1

matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(matrix.ndim)  # 2

tensor = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(tensor.ndim)  # 3

Типы данных в NumPy: dtype

В отличие от стандартных списков Python, где каждый элемент может иметь свой тип, массивы в NumPy характеризуются тем, что все их элементы имеют одинаковый тип данных. Это обеспечивает высокую производительность операций, особенно при работе с большими объемами данных.

dtype — это объект, который информирует о типе данных для элементов массива. NumPy предоставляет целый ряд предопределенных типов данных, которые можно использовать для создания массивов.

Основные типы данных (dtype) в NumPy:

Целые числа:

  • int8, int16, int32, int64: целые числа (знаковые) разной битности
  • uint8, uint16, uint32, uint64: целые числа (беззнаковые)

Вещественные числа:

  • float16, float32, float64: вещественные числа разной точности

Комплексные числа:

  • complex64, complex128: комплексные числа с вещественными и мнимыми частями, представленными как float32 и float64 соответственно

Булев тип:

  • bool: True или False

Строковый тип:

  • string_: фиксированная длина строки. Например, string_5 будет строкой длиной 5 символов.
  • unicode_: фиксированная длина юникодной строки

Объект:

  • object: объекты Python

Примеры использования:

import numpy as np

arr_int = np.array([1, 2, 3], dtype=np.int32)
print(arr_int.dtype)  # int32

arr_float = np.array([1.1, 2.2, 3.3], dtype=np.float64)
print(arr_float.dtype)  # float64

arr_complex = np.array([1 + 2j, 3 + 4j])
print(arr_complex.dtype)  # complex128

arr_bool = np.array([True, False, True])
print(arr_bool.dtype)  # bool

arr_str = np.array(["apple", "banana", "cherry"], dtype=np.string_)
print(arr_str.dtype)  # |S6 (строка максимальной длины 6 символов)

arr_obj = np.array([1, "two", [3, 3, 3]], dtype=object)
print(arr_obj.dtype)  # object

Точное знание типов данных и их использование в NumPy позволяют оптимизировать использование памяти и ускорять операции, особенно при работе с большими объемами данных.

Заключение

NumPy является ключевой библиотекой для научных вычислений в Python. Он предоставляет поддержку для работы с большими многомерными массивами и имеет обширный набор функций для математических операций над этими массивами.

Содержание: