반응형
빈 배열에 일정한 길이의 배열을 쌓는 방법을 이해합니다.
목차
개발 의도
import numpy as np
# 기존의 빈 배열 a
a = np.array([])
for i in range(3):
# 새로 쌓을 길이 3의 배열
if len(a) == 0:
a = np.array([i, i, i])
else:
a = np.vstack((a, np.array([i, i, i])))
print(a)
# 출력값: [[0,0,0],[1,1,1],[2,2,2]]
- 위와 같이 빈 배열 a에 일정한 길이의 배열을 쌓는 코드를 작성합니다.
문제 상황
- 위 코드는 정상적으로 작동합니다.
- 단, 조건문과 len(a) 없이 배열을 쌓는 코드 작성 방법을 찾아봅니다.
문제 원인 파악
import numpy as np
# 기존의 빈 배열 a
a = np.array([])
for i in range(3):
# 새로 쌓을 길이 3의 배열
a = np.vstack((a, np.array([i, i, i])))
print(a)
# 출력값: ValueError: all the input......
- 위와 같이 조건문 없이 배열을 쌓는다면
배열 a의 shape(크기) 불일치 문제가 발생합니다.
- 배열 a의 shape(크기)을 정의한 뒤
배열을 쌓아봅니다.
shape 정의를 통한 배열 쌓기
import numpy as np
# 기존의 빈 배열 a
a = np.array([])
# 길이 3의 배열을 쌓으려면 먼저 2차원 배열로 초기화해야 합니다.
a = np.reshape(a, (0, 3))
for i in range(3):
# 새로 쌓을 길이 3의 배열
a = np.vstack((a, np.array([i, i, i])))
print(a)
# 출력값: [[0,0,0],[1,1,1],[2,2,2]]
- a = np.reshape(a, (0, 3))를 통해 길이 3의 2차원 배열로 초기화합니다.
- 이 후 배열을 정상적으로 쌓을 수 있습니다.
아래 코드로 디버깅 완료
import numpy as np
# 기존의 빈 배열 a
a = np.array([])
# 길이 3의 배열을 쌓으려면 먼저 2차원 배열로 초기화해야 합니다.
a = np.reshape(a, (0, 3))
for i in range(3):
# 새로 쌓을 길이 3의 배열
a = np.vstack((a, np.array([i, i, i])))
print(a)
# 출력값: [[0,0,0],[1,1,1],[2,2,2]]
- 결과적으로 a의 배열 정의를 통해
조건문과 len(a) 코드 없이 깔끔하게 배열을 쌓을 수 있습니다.
반응형
'개발 > 오늘의 개발일지' 카테고리의 다른 글
[Python] 반복문에서 요소와 인덱스 활용을 위한 enumerate 이해하기 (1) | 2024.11.19 |
---|---|
[Python] 한줄로 print 문을 출력하기 위한 캐리지 리턴 이해하기 (0) | 2024.11.17 |
[Python] 스레드 종료를 기다리기 위한 join 이해하기 (0) | 2024.11.16 |
[Python] 메인 프로그램과 함께 종료되는 데몬 스레드 이해하기 (0) | 2024.11.15 |
[Python] 하나의 변수에 여러 스레드가 접근하는 것을 막기 위한 Lock 이해하기 (2) | 2024.11.14 |