파이썬에서 2 차원 배열을 시작하는 방법
이 튜토리얼 가이드는 파이썬에서 2 차원 배열을 시작하는 다양한 방법을 소개합니다. 다음 예에서는 3x5
2 차원 배열을 만듭니다.
2D 배열을 시작하기위한 목록 이해 방법
>>> column, row = 3, 5
>>> array2D = [[0 for _ in range(row)] for _ in range(column)]
>>> array2D
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
이 중첩 된 목록 이해 방법은 초기 값이 0
인 2 차원 배열을 만듭니다. 물론 초기 값을 응용 프로그램에 할당해야하는 값으로 변경할 수 있습니다.
2D 배열을 시작하는 중첩 된 ‘범위’방법
2 차원 배열의 초기 값에 신경 쓰지 않으면 0
값을 제거 할 수도 있습니다.
Python 2.x 에서
>>> column, row = 3, 5
>>> A = [range(row) for _ in range(column)]
>>> A
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
파이썬 3.x 에서
>>> column, row = 3, 5
>>> A = [range(row) for _ in range(column)]
>>> A
[range(0, 5), range(0, 5), range(0, 5)]
range
는 Python 3.x 에서 정수 시퀀스를 포함하는 객체를 반환하지만 Python 에서와 같이 정수 목록을 반환하지 않으므로 Python 3.x 에서 2D 배열을 시작하기 위해 단순히 range(x)
를 사용할 수 없습니다 2.x.
Python 3.x 의 range
는 Python 2.x 의 xrange
와 더 유사합니다. Python 3.x 의 range
객체는 변경할 수 없으므로 요소에 항목을 할당하지 않습니다.
아이템 할당이 필요한 경우,range
를 list
객체로 변환해야합니다.
>>> A = [list(range(row)) for _ in range(column)]
>>> A
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
2D 배열을 시작하는[0] * N
방법
2 차원 배열을 시작하는 파이썬적인 방법 중 하나는
>>> column, row = 3, 5
>>> A = [[0]*row for _ in range(column)]
>>> A
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
리스트 곱셈을 사용할 때는 하나의 동일한 객체를 여러 번 참조하는 시퀀스를 생성하기 때문에주의를 기울여야하지만 데이터 객체 0
은 불변이므로 여기서는 [0]*n
을 사용하는 것이 좋습니다. 동일한 불변 객체에 대한 참조에서도 문제가 발생하지 않습니다.
2D 배열을 시작하는 NumPy
방법
기본 파이썬 배열 외에도 NumPy
는 2 차원 배열을 만들거나보다 정확한 행렬을 만드는 가장 좋은 옵션이어야합니다.
numpy.zeros
로 0으로 채워진 행렬을 만들 수 있습니다.
>>> import numpy as np
>>> column, row = 3, 5
>>> np.zeros(column, row)
array([[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.]])
또는 numpy.ones
로 ones
로 채워진 행렬을 시작하십시오.
>>> import numpy as np
>>> column, row = 3, 5
>>> np.ones((column, row))
array([[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1.]])
numpy.empty
로 항목을 초기화하지 않고도 새로운 배열을 만들 수도 있습니다
>>> import numpy as np
>>> column, row = 3, 5
>>> np.empty((5,5))
array([[6.23042070e-307, 4.67296746e-307, 1.69121096e-306,
1.33511562e-306, 1.89146896e-307],
[7.56571288e-307, 3.11525958e-307, 1.24610723e-306,
1.37962320e-306, 1.29060871e-306],
[2.22518251e-306, 1.33511969e-306, 1.78022342e-306,
1.05700345e-307, 1.11261027e-306],
[1.11261502e-306, 1.42410839e-306, 7.56597770e-307,
6.23059726e-307, 1.42419530e-306],
[7.56599128e-307, 1.78022206e-306, 8.34451503e-308,
2.22507386e-306, 7.20705877e+159]])
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook