Transposing a Matrix WITHOUT numpy - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Transposing a Matrix WITHOUT numpy (/thread-16482.html) |
Transposing a Matrix WITHOUT numpy - TreasureDragon - Mar-01-2019 So our assignment is to ask for user input for two matrices and then multiply them and show the result then switch the result to a transpose. Since I did it in 1D instead of 2D, I have to transpose the original A and B rather than C. So how can I do this? This is what I have so far and all of this works as intended. Just need help with the transposing part: Ar, Ac = input("Enter matrix A rows and columns: ").split() Br, Bc = input("Enter matrix B rows and columns: ").split() A = input("Enter matrix A: ").split() B = input("Enter matrix B: ").split() intAr, intAc = int(Ar), int(Ac) intBr, intBc = int(Br), int(Bc) AMatrix = list() BMatrix = list() CMatrix = list() if Ac == Br: print(f"\nMatrix A:") for x in range(intAr): AList = list() for y in range(intAc): AList.append(int(A[y + intAc*x])) print(str(A[y+intAc*x])," ", end = '') AMatrix.append(AList) print() print(f"\nMatrix B:") for x in range(intBr): BList = list() for y in range(intBc): BList.append(int(B[y + intBc*x])) print(str(B[y+intBc*x])," ", end = '') BMatrix.append(BList) print() print(f"\nMatrix C:") for x in range(intAr): for y in range(intBc): C = 0 for z in range(intBr): C += (AMatrix[x][z] * BMatrix[z][y]) CMatrix.append(C) print(C, ' ', end ='') print() print(f"\nTranspose matrix T:") else: print(f"\nCannot be multiplied. Please make sure the number of columns of A and rows of B are the same.") RE: Transposing a Matrix WITHOUT numpy - ichabod801 - Mar-01-2019 It's incredibly simple to transpose a 2D matrix in Python: transposed = zip(*matrix)It's so simple, that if you are working in 1D, I would suggest converting to 2D to do the transposition. RE: Transposing a Matrix WITHOUT numpy - TreasureDragon - Mar-02-2019 (Mar-01-2019, 10:46 PM)ichabod801 Wrote: It's incredibly simple to transpose a 2D matrix in Python: How can I convert the C Matrix into a 2D Matrix though? Sorry, this is my first semester ever in compsci so I am so lost right now. RE: Transposing a Matrix WITHOUT numpy - ichabod801 - Mar-02-2019 Well, looking at your code, you are actually working in 2D. Your matrices are stored as a list of lists. So you can just use the code I showed you. Note that it will give you a generator, not a list, but you can fix that by doing transposed = list(zip(*matrix)) The reason it works is that zip takes any number of lists as parameters. It then returns a list of the first item in each list, a list of the second item in each list, a list of the third item in each list, and so on. The star (*) notation converts a sequence (like a list) into a series of parameters. RE: Transposing a Matrix WITHOUT numpy - TreasureDragon - Mar-02-2019 (Mar-02-2019, 06:55 PM)ichabod801 Wrote: Well, looking at your code, you are actually working in 2D. Your matrices are stored as a list of lists. So you can just use the code I showed you. Note that it will give you a generator, not a list, but you can fix that by doing Oh. So just simply use the code? But it's a library function isn't it... We aren't allowed to use those for now :( And the code didn't work... RE: Transposing a Matrix WITHOUT numpy - ichabod801 - Mar-02-2019 It's a built-in function, just like list, int, range, and input. You could write a set of loops to do what I described: get a list of the first item in each list, a list of the second item in each list, a list of the third item in each list, and so on. But you would have to loop through the indexes of the list and the sub-lists, which wouldn't be very Pythonic. |