Функция atleast_3d
Функция atleast_3d преобразует скаляры, списки, кортежи
и одномерные или двумерные массивы в трехмерные массивы NumPy.
Она автоматически определяет необходимую размерность и добавляет
новые оси в начало или в конец формы массива для достижения трехмерности.
Функция может принимать один или несколько входных объектов,
возвращая либо один массив, либо список массивов.
Синтаксис
np.atleast_3d(*arrays)
Параметры функции:
-
*arrays- один или несколько входных объектов (скаляры, списки, кортежи или массивы NumPy), которые необходимо привести к трехмерному виду.
Возвращаемое значение:
- Если передан один объект, возвращается трехмерный массив NumPy.
- Если передано несколько объектов, возвращается список трехмерных массивов.
Пример
Давайте преобразуем скаляр в трехмерный массив:
import numpy as np
arr = np.atleast_3d(5)
print(arr)
print("Shape:", arr.shape)
Результат выполнения кода:
[[[5]]]
Shape: (1, 1, 1)
Пример
Преобразуем одномерный массив из пяти элементов в трехмерный:
import numpy as np
arr_1d = np.array([1, 2, 3, 4, 5])
arr_3d = np.atleast_3d(arr_1d)
print(arr_3d)
print("Shape:", arr_3d.shape)
Результат выполнения кода:
[[[1]
[2]
[3]
[4]
[5]]]
Shape: (1, 5, 1)
Обратите внимание: форма одномерного массива (5,) была преобразована в (1, 5, 1), где первая и последняя оси имеют размерность 1.
Пример
Преобразуем двумерный массив в трехмерный:
import numpy as np
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
arr_3d = np.atleast_3d(arr_2d)
print(arr_3d)
print("Shape:", arr_3d.shape)
Результат выполнения кода:
[[[1]
[2]
[3]]
[[4]
[5]
[6]]]
Shape: (2, 3, 1)
Двумерный массив формы (2, 3) стал трехмерным с формой (2, 3, 1), где новая ось добавлена в конец.
Пример
Преобразуем несколько объектов одновременно в список трехмерных массивов:
import numpy as np
scalar = 7
arr_1d = np.array([10, 20, 30])
arr_2d = np.array([[1, 2], [3, 4]])
res = np.atleast_3d(scalar, arr_1d, arr_2d)
for i, arr in enumerate(res):
print(f"Array {i}: shape = {arr.shape}")
Результат выполнения кода:
Array 0: shape = (1, 1, 1)
Array 1: shape = (1, 3, 1)
Array 2: shape = (2, 2, 1)
Каждый входной объект был преобразован в трехмерный массив, и все они собраны в один список.
Пример
Если входной массив уже имеет три измерения, функция не изменяет его:
import numpy as np
arr_3d_original = np.array([[[1, 2], [3, 4]]])
arr_3d_result = np.atleast_3d(arr_3d_original)
print("Original shape:", arr_3d_original.shape)
print("Result shape:", arr_3d_result.shape)
print("Are they the same object?", arr_3d_original is arr_3d_result)
Результат выполнения кода:
Original shape: (1, 2, 2)
Result shape: (1, 2, 2)
Are they the same object? True
Функция возвращает исходный массив без копирования, если он уже является трехмерным.
Пример
Преобразуем список в трехмерный массив, не создавая промежуточный массив:
import numpy as np
arr = np.atleast_3d([1, 2, 3, 4, 5])
print(arr)
print("Shape:", arr.shape)
Результат выполнения кода:
[[[1]
[2]
[3]
[4]
[5]]]
Shape: (1, 5, 1)
Смотрите также
-
функцию
atleast_1d,
которая приводит входные данные к одномерным массивам -
функцию
atleast_2d,
которая приводит входные данные к двумерным массивам -
функцию
expand_dims,
которая расширяет форму массива, вставляя новую ось в указанной позиции -
функцию
squeeze,
которая удаляет оси размерности 1 из формы массива