Функция транспонирования Numpy меняет местами или переставляет оси массива и возвращает измененный массив. Для массива с двумя осями транспонирование (a) дает транспонирование матрицы. Транспонирование одномерного массива по-прежнему остается одномерным массивом. Прежде чем продолжить, давайте узнаем разницу между матрицами Numpy и массивами Numpy.
ndarray — это (обычно фиксированного размера) многомерный контейнер элементов одного типа и размера. Количество измерений и элементов в массиве определяется его формой, которая представляет собой кортеж из N неотрицательных целых чисел, определяющих размеры каждого измерения.
Тип элементов в массиве определяется отдельным объектом типа данных ( dtype ), один из которых связан с каждым ndarray . Как и в случае с другими объектами-контейнерами в Python, к содержимому ndarray можно получить доступ и изменить путем индексации или нарезки массива (с использованием, например, N целых чисел), а также с помощью методов и атрибутов ndarray .
- Разница между Numpy-матрицами и Numpy-массивами
- Numpy transpose
- numpy.transpose (a, axes = None) Параметры a: array_like Это входной массив. оси: кортеж или список целых чисел, необязательно
- Параметры
- a: array_like
- Это входной массив.
- оси: кортеж или список целых чисел, необязательно
- Возвращаемое значение
- Пример
- Вывод
- Транспонировать двумерный массив (матрицу)
- Вывод
- ndarray.transpose ()
- Вывод
- Транспонирование объекта, подобного массиву
- Вывод
- Преобразование 1D-вектора в 2D-массив в Numpy
- Вывод
- Вывод
- Применение transpose () или T к одномерному массиву
- Вывод
- Numpy matrix.transpose ()
- Вывод
- Указание порядка осей с помощью transpose ()
- Вывод
- Заключение
- См. также
Разница между Numpy-матрицами и Numpy-массивами
Матрицы numpy строго двумерны, а массивы numpy (ndarrays) являются N-мерными. Объекты Matrix являются подклассом ndarray, поэтому они наследуют все атрибуты и методы ndarrays.
Главное преимущество numpy матриц состоит в том, что они обеспечивают удобную запись для умножения матриц: если x и y являются матрицами, то x * y — их матричное произведение.
С другой стороны, начиная с Python 3.5, Numpy поддерживает инфиксное матричное умножение с помощью оператора @ , так что вы можете достичь того же удобства, что и матричное умножение с ndarrays в Python> = 3.5.
И матричные объекты, и ndarrays имеют .T для возврата транспонирования, но и матричные объекты также иметь .H для сопряженного транспонирования и I для обратного.
Напротив, массивы numpy последовательно подчиняются правилу что операции применяются поэлементно (за исключением нового оператора @). Таким образом, если x и y являются массивами numpy, то x * y — это массив, сформированный путем поэлементного умножения компонентов.
Надеюсь, теперь вы сомневаетесь в Numpy array и Numpy Matrix будут чистыми.
Numpy transpose
Функция Numpy transpose () может выполнять простую функцию транспонировать в пределах одной строки.
Метод transpose () может транспонировать двумерные массивы; с другой стороны, это не влияет на одномерные массивы. Метод transpose () транспонирует двумерный массив numpy.
numpy.transpose (a, axes = None)
Параметры
a: array_like
Это входной массив.
оси: кортеж или список целых чисел, необязательно
Если указано, это должен быть кортеж или список, содержащий перестановку [0,1, .., N-1] где N — количество осей a.
i-я ось возвращенного массива будет соответствовать пронумерованным осям [i] ввода.
Если не указано, по умолчанию используется диапазон (a.ndim) [:: — 1], который меняет порядок осей на обратный.
Возвращаемое значение
Функция transpose () возвращает массив с переставленными осями . По возможности возвращается представление .
Пример
# app.pyimport numpy as npdata = np.arange (6) .reshape ((2, 3)) print («Исходный массив») print (data) tMat = np.transpose (data) print («Transposed Array») print (tMat)
Вывод
python3 app.py Исходный массив [[0 1 2] [3 4 5]] Транспонированный массив [[0 3] [ 1 4] [2 5]]
Мы определили массив с помощью функции np arange и изменили его форму на (2 X 3).
Затем мы использовали Функция transpose () для преобразования строк в столбцы и столбцов в строки.
Транспонировать двумерный массив (матрицу)
Вы можете получить транспонированную матрицу исходного двумерного массива (матрицы) с атрибутом T в Python. См. Следующий код.
import numpy as nparr2d = np.arange (6) .reshape (2, 3) print (arr2d) print (' n') print ('После использования атрибута T : ') arr2d_T = arr2d.Tprint (arr2d_T)
Вывод
[[0 1 2] [3 4 5] ] После использования атрибута T: [[0 3] [1 4] [2 5]]
Атрибут Numpy T возвращает представление исходного массива, а изменение одного изменяет другое. Вы можете проверить, ссылается ли ndarray на данные в той же памяти, с помощью np.shares_memory () .
ndarray.transpose ()
transpose () предоставляется как метод ndarray. Например, T, представление возвращается.
import numpy as nparr2d = np.arange (6) .reshape (2, 3) print (arr2d) print (' n' ) print ('После использования функции transpose ():') arr2d_T = arr2d.transpose () print (arr2d_T)
Вывод
[[0 1 2] [3 4 5]] После использования функции transpose (): [[0 3] [1 4] [2 5]]
Вы можете видеть, что мы получили тот же результат, что и выше.
Транспонирование объекта, подобного массиву
Функция transpose () также работает с объектом, подобным массиву, например вложенный список.
# app.pyimport numpy as nparr = [[11, 21, 19], [46, 18, 29]] print (arr) arr1_transpose = np.transpose (arr) print (arr1_transpose)
Вывод
приложение python3. py [[11, 21, 19], [46, 18, 29]] [[11 46] [21 18] [19 29]]
Преобразование 1D-вектора в 2D-массив в Numpy
Если вы хотите преобразовать свой одномерный вектор в 2D-массив, а затем транспонировать его, просто нарежьте его с помощью numpy np.newaxis (или None, они такие же, новая ось только более читабельна).
См. следующий код.
# app.pyimport numpy as nparr = np.array ([19, 21]) [np.newaxis] print (arr) print (arr.T)
Вывод
python3 app.py [[19 21]] [[19] [21]]
Добавление дополнительного измерения обычно не то, что вам нужно, если вы просто делаете это по привычке.
Numpy будет автоматически транслировать массив 1D при выполнении различных вычислений. Обычно нет необходимости различать вектор-строку и вектор-столбец (ни один из которых не является векторами . Они оба 2D!), Когда вам просто нужен вектор.
Вы также можете использовать следующий метод.
# app.pyimport numpy as nparr = np.array ([19, 21, 29, 46]) Rearr = arr.reshape ((- 1 , 1)) print (backr)
Вывод
python3 app.py [[19] [21] [29] [46]]
Используйте transpose ( arr, argsort (axes)) , чтобы инвертировать транспонирование тензоров при использовании Аргумент ключевого слова axes . Транспонирование одномерного массива возвращает неизменный вид исходного массива.
Применение transpose () или T к одномерному массиву
Если мы применим T или transpose () к одномерному массиву, то он вернет массив, эквивалентный исходному массиву.
import numpy as nparr2d = np.arange (6) print ( arr2d) print (' n') print ('После применения T:') arr2d_T = arr2d.Tprint (arr2d_T) print (' n') print ('После применения функции transpose ():') arr2d_transpose = arr2d.transpose () print (arr2d_transpose)
Вывод
[0 1 2 3 4 5] После применения T: [0 1 2 3 4 5] После применения функции transpose (): [0 1 2 3 4 5]
В выводе вы можете увидеть, что после применения функции T или transpose () к 1D-массиву она возвращает исходный массив.
Numpy matrix.transpose ()
В приведенном выше разделе мы видели, как найти numpy Перенести массив с помощью функции numpy transpose (). Давайте найдем транспонирование матрицы numpy ().
# app.pyimport numpy as npmat = np.matrix ('[19, 21; 11, 10]') print ("Исходная матрица" ) print (mat) # применение matrix.transpose () methodprint ('Transposed Matrix') print (mat.transpose ())
Вывод
python3 app.pyOriginal Matrix [[19 21] [11 10]] Транспонированная матрица [[19 11] [21 10]]
Матрица только с одной строкой называется вектор-строка, а матрица с одним столбцом называется вектором-столбцом, но нет различия между строками и столбцами в одномерном массиве ndarray.
Двумерный массив используется, чтобы указать, что присутствуют только строки или столбцы.
Здесь преобразуйте форму с помощью reshape ().
Указание порядка осей с помощью transpose ()
Использование T всегда меняет порядок на противоположный, но с помощью транспонирования ( ), вы можете указать любой порядок.
В приведенном ниже примере укажите тот же обратный порядок, что и по умолчанию, и убедитесь, что результат не изменится.
В методе ndarray transpose () укажите порядок оси с аргументами переменной длины или кортежем.
import numpy как nparr = np.arange (24) .reshape (2, 3, 4) print ( arr) print (arr.transpose (2, 1, 0))
Вывод
[[[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]]]
Ошибка возникает, если количество указанных осей не совпадает с несколькими измерениями исходный массив, или если указано несуществующее измерение.
Заключение
В этом руководстве по транспонированию Numpy мы видели, как использовать функцию transpose () для массива numpy и матрицу numpy, разницу между матрицей numpy и массивом и как преобразовать 1D в массив 2D.
Наконец, Numpy.transpose () пример функции окончен.
См. также
Форма массива Numpy
Атрибуты массива Numpy
Как найти индекс массива Numpy