2차원 행열이 다음처럼 주어져있다고 하자.
arr = [[1,2,3],[4,5,6],[7,8,9]]
이중 for을 써서 행열을 뒤집을 수 있다.
new_arr = [[], [], []]
for i in range(len(mylist)):
for j in range(len(mylist[i])):
new_arr[i].append(mylist[j][i])
* 연산자의 이해
다른 방법을 알아보기 전에 * 연산자의 이용방법을 하나 알아보자.
a, b, *c, d = 'a', 2, 'e', 4, 5
print(a,b,c,d)
# a 2 ['e',4] 5
a,b,*c,d = 1,2,3,4,5
print(a,b,c,d) # >> 1 2 [3,4] 5
*c는 남은 성분 모두를 받아준다.
zip()의 이용
arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for i in zip(arr[0],arr[1],arr[2]):
print(i)
# (1, 4, 7)
# (2, 5, 8)
# (3, 6, 9)
각 성분의 i열을 묶어서 출력한다.
지금은 튜플 자료형이니 list로 묶으면 2차원 리스트를 만들 수 있다.
한편, arr[0], arr[1]. arr[2]를 쓰는 대신 *를 써서 모든 arr를 받아볼 수 있다.
행열 transpose
arr = [[1,2,3],[4,5,6],[7,8,9]]
new_arr = list(map(list,zip(*arr)))
print(new_arr)
# [[1,4,7],[2,5,8],[3,6,9]]
이렇게 짧은 식으로 행열 transpose가 가능하게 된다.
728x90
'Programing > Python' 카테고리의 다른 글
Hungaian algorithm (0) | 2023.11.10 |
---|---|
Numpy의 boolean 조건으로 index 배열 slicing (0) | 2023.10.03 |
클래스 상속, super().__init__() -> 오버로딩 (0) | 2023.09.25 |
댓글