np.transpose() в Python — это библиотечная функция Numpy, которая выполняет простую функцию транспонирования в одной строке. Метод transpose() может транспонировать 2D-массивы; однако это не влияет на одномерные массивы. Он переворачивает или переставляет оси массива и возвращает измененный массив. Для массива с двумя осями транспонирование(а) дает транспонирование матрицы.
Транспонирование массива 1D по-прежнему является массивом 1D. Однако метод transpose() транспонирует двумерный массив numpy.
Ndarray — это(обычно фиксированного размера) многомерный контейнер элементов одного типа и размера. Количество измерений и элементов в массиве определяется его формой, которая представляет собой кортеж из N неотрицательных целых чисел, определяющих размеры каждого измерения. Тип элементов в массиве определяется отдельным объектом типа данных(dtype), связанным с каждым ndarray.
Как и в случае с другими объектами-контейнерами в Python, к содержимому ndarray можно получить доступ и изменить его путем индексации или разделения массива(например, с использованием N целых чисел), а также с помощью методов и атрибутов ndarray.
Вы должны установить numpy для этого урока. Кроме того, проверьте свою версию numpy. Прежде чем двигаться дальше, давайте узнаем разницу между матрицами Numpy и массивами Numpy.
- Синтаксис
- Параметры numpy.transpose() в Python
- Возвращаемое значение
- Пример
- Транспонирование двумерного массива (матрицы)
- ndarray.transpose()
- Транспонирование объекта, подобного массиву
- Преобразование 1D-вектора в 2D-массив в Numpy
- Применение transpose() или T к одномерному массиву
- Numpy matrix.transpose()
- Указание порядка осей с помощью transpose()
- Заключение
Синтаксис
|
1 |
numpy.transpose(a, axes=None) |
Параметры numpy.transpose() в Python
- а: array_like — это входной массив.
- axes: кортеж или список целых чисел, необязательный.
Если указан, это должен быть кортеж или список, содержащий перестановку [0,1,.., N-1], где N — количество осей a.
i-я ось возвращаемого массива будет соответствовать оси с номером axes[i] ввода.
Если не указан, по умолчанию используется диапазон(a.ndim)[::-1], который меняет порядок осей на противоположный.
Возвращаемое значение
Функция transpose() в Python возвращает массив с переставленными осями. Представление возвращается всякий раз, когда это возможно.
Пример
|
1 2 3 4 5 6 7 8 9 |
import numpy as np data = np.arange(6).reshape((2, 3)) print("Original Array") print(data) tMat = np.transpose(data) print("Transposed Array") print(tMat) |
Выход
|
1 2 3 4 5 6 7 |
Original Array [[0 1 2] [3 4 5]] Transposed Array [[0 3] [1 4] [2 5]] |
Мы определили массив с помощью функции np.arange() и преобразовали его в(2 X 3). Затем мы использовали функцию transpose(), чтобы преобразовать строки в столбцы и столбцы в строки.
Транспонирование двумерного массива (матрицы)
Вы можете получить транспонированную матрицу исходного двумерного массива(матрицы) с атрибутом T в Python. См. следующий код.
|
1 2 3 4 5 6 7 8 |
import numpy as np arr2d = np.arange(6).reshape(2, 3) print(arr2d) print('\n') print('After using T attribute: ') arr2d_T = arr2d.T print(arr2d_T) |
Выход
|
1 2 3 4 5 6 7 8 |
[[0 1 2] [3 4 5]] After using T attribute: [[0 3] [1 4] [2 5]] |
Атрибут Numpy T возвращает представление исходного массива, и изменение одного изменяет другое. Вы можете проверить, ссылается ли ndarray на данные в той же памяти, с помощью np.shares_memory().
ndarray.transpose()
Transpose() предоставляется как метод ndarray.
|
1 2 3 4 5 6 7 8 |
import numpy as np arr2d = np.arange(6).reshape(2, 3) print(arr2d) print('\n') print('After using transpose() function: ') arr2d_T = arr2d.transpose() print(arr2d_T) |
Выход
|
1 2 3 4 5 6 7 8 |
[[0 1 2] [3 4 5]] After using transpose() function: [[0 3] [1 4] [2 5]] |
Вы можете видеть, что мы получили тот же результат, что и выше.
Транспонирование объекта, подобного массиву
Функция transpose() работает с объектами, похожими на массивы, такими как вложенный список.
|
1 2 3 4 5 6 7 |
import numpy as np arr = [[11, 21, 19], [46, 18, 29]] print(arr) arr1_transpose = np.transpose(arr) print(arr1_transpose) |
Выход
|
1 2 3 4 |
[[11, 21, 19], [46, 18, 29]] [[11 46] [21 18] [19 29]] |
Преобразование 1D-вектора в 2D-массив в Numpy
Чтобы преобразовать ваш 1D-вектор в 2D-массив, а затем транспонировать его, нарежьте его с помощью numpy np.newaxis(или None, они одинаковы; новая ось только более читабельна).
См. следующий код.
|
1 2 3 4 5 |
import numpy as np arr = np.array([19, 21])[np.newaxis] print(arr) print(arr.T) |
Выход
|
1 2 3 |
[[19 21]] [[19] [21]] |
Добавление дополнительного измерения обычно не то, что вам нужно, если вы делаете это по привычке. Numpy будет автоматически транслировать массив 1D при выполнении различных вычислений.
Таким образом, обычно нет необходимости различать вектор-строку и вектор-столбец(ни один из них не является вектором. Они оба двумерные!), когда вам нужен вектор.
Вы также можете использовать следующий метод.
|
1 2 3 4 5 |
import numpy as np arr = np.array([19, 21, 29, 46]) rearr = arr.reshape((-1, 1)) print(rearr) |
Выход
|
1 2 3 4 |
[[19] [21] [29] [46]] |
|
1 |
Use transpose(arr, argsort(axes)) to invert the transposition of tensors when using the axes keyword argument. For example, transposing the 1D array returns the unchanged view of the original array. |
Применение transpose() или T к одномерному массиву
Если мы применяем T или transpose() к одномерному массиву, он возвращает массив, эквивалентный исходному массиву.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
import numpy as np arr2d = np.arange(6) print(arr2d) print('\n') print('After applying T: ') arr2d_T = arr2d.T print(arr2d_T) print('\n') print('After applying transpose() function: ') arr2d_transpose = arr2d.transpose() print(arr2d_transpose) |
Выход
|
1 2 3 4 5 6 7 8 9 |
[0 1 2 3 4 5] After applying T: [0 1 2 3 4 5] After applying transpose() function: [0 1 2 3 4 5] |
|
1 |
You can see in the output that, After applying the T or transpose() function to a 1D array, it returns an original array. |
Numpy matrix.transpose()
В приведенном выше разделе мы увидели, как найти транспонирование массива numpy с помощью функции numpy transpose(). Но сначала давайте найдем транспонированную матрицу — numpy matrix().
|
1 2 3 4 5 6 7 8 9 |
import numpy as np mat = np.matrix('[19, 21; 11, 10]') print("Original Matrix") print(mat) # applying matrix.transpose() method print('Transposed Matrix') print(mat.transpose()) |
Выход
|
1 2 3 4 5 6 |
Original Matrix [[19 21] [11 10]] Transposed Matrix [[19 11] [21 10]] |
Матрица только с одной строкой называется вектором-строкой, а матрица с одним столбцом называется вектором-столбцом, но в одномерном массиве ndarray нет различия между строками и столбцами. Двумерный массив указывает, что присутствуют только строки или столбцы. Здесь преобразуйте форму с помощью reshape().
Указание порядка осей с помощью transpose()
Использование T навсегда меняет порядок, но вы можете указать любой порядок, используя метод transpose().
В приведенном ниже примере укажите тот же обратный порядок, что и по умолчанию, и подтвердите, что результат не изменится.
Метод ndarray transpose() задает порядок осей с аргументами или кортежами переменной длины.
|
1 2 3 4 5 6 |
import numpy as np arr = np.arange(24).reshape(2, 3, 4) print(arr) print(arr.transpose(2, 1, 0)) |
Выход
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
[[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [[12 13 14 15] [16 17 18 19] [20 21 22 23]]] [[[ 0 12] [ 4 16] [ 8 20]] [[ 1 13] [ 5 17] [ 9 21]] [[ 2 14] [ 6 18] [10 22]] [[ 3 15] [ 7 19] [11 23]]] |
Ошибка возникает, если количество указанных осей не соответствует нескольким измерениям исходного массива или если указано несуществующее измерение.
Заключение
np.transpose() — это функция, используемая для транспонирования заданного массива. Транспонирование массива означает, что строки становятся столбцами, а столбцы — строками. Функцию np.transpose() можно применять к любому массиву Numpy, включая матрицы.
