파이썬에서 2 차원 배열을 시작하는 방법

Jinku Hu 2023년1월30일
  1. 2D 배열을 시작하기위한 목록 이해 방법
  2. 2D 배열을 시작하는 중첩 된 ‘범위’방법
  3. 2D 배열을 시작하는 NumPy 방법
파이썬에서 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 객체는 변경할 수 없으므로 요소에 항목을 할당하지 않습니다.

아이템 할당이 필요한 경우,rangelist 객체로 변환해야합니다.

>>> 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.onesones로 채워진 행렬을 시작하십시오.

>>> 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]])
노트
빈 배열을 먼저 만든 다음 나중에 요소 값을 할당하려는 경우 더 나은 솔루션입니다. 그러나 임의의 값이 배열에 있으므로 해당 인덱스의 값이 할당되기 전에 인덱싱하여 배열에 액세스하면 위험 할 수 있습니다.
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

관련 문장 - Python Array