Desse modo, tendo uma matriz $MA = (ma_{ij})_{m_{x}n}$ a transposta de MA é $MA^{t} = (ma^{'}_{ji})_{n_{x}m}$.
$MA = \begin{bmatrix} a_{1,1} & a_{1,2} & ... & a_{1,n} \\ a_{2,1} & a_{2,2} & ... & a_{2,n} \\ : & : & : & : \\ a_{m,1} & a_{m,2} & ... & a_{m,n} \\ \end{bmatrix} MA^{t} = \begin{bmatrix} a_{1,1} & a_{2,1} & : & a_{m,1} \\ a_{1,2} & a_{2,2} & : & a_{m,2} \\ ... & ... & : & ... \\ a_{1,n} & a_{2,n} & : & a_{m,n} \\ \end{bmatrix}$
import numpy as np # importando a biblioteca numpy padrão do Python
# criando a função de matriz transposta
def transposta():
# recebe a quantidade de linhas da matriz
linha = int(input("Informe quantas linhas tem sua matriz: "))
# recebe a quantidade de colunas da matriz
coluna = int(input("Informe quantas colunas tem sua matriz: "))
# comandos de ir para a próxima linha
print("\n")
# iniciando uma matriz de números reais com linhas e colunas definidas
A = np.empty([linha,coluna], dtype = float)
# estrutura for aninhada que recebe os elementos da matriz
for i in range(0, linha):
for j in range(0, coluna):
A[i][j] = float(input("Insira o elemento [{}][{}] da matriz: ".format(i + 1,j + 1)))
#imprime na tela a matriz original
print("\n\nA matriz digitada é:\n\n{}\n\n".format(A))
# definindo a matriz transposta com uma função do numpy
A_T = np.transpose(A)
# imprime na tela a matriz transposta
print("A matriz transposta é:\n\n{}\n\n". format(A_T))
# definindo a matriz transposta da matriz A_T, voltando a ser a matriz A
A = np.transpose(A_T)
# imprime na tela a matriz tranposta da mesma já transposta, ou seja, retornará a matriz original
print("A matriz transposta da transpostada é:\n\n{}".format(A))
# função não retorna nenhum valor
return None
# imprimindo a função criada
transposta()
A matriz digitada é: [[1. 2. 3.] [4. 5. 6.]] A matriz transposta é: [[1. 4.] [2. 5.] [3. 6.]] A matriz transposta da transpostada é: [[1. 2. 3.] [4. 5. 6.]]