[Python] NumPy 배열 생성
- 파이썬(Python)
- 2022. 2. 18. 17:02
참조
NumPy 특징
- Numerical Python의 약자
- 고성능 과학 계산용 패키지로 강력한 N차원 배열 객체
- 범용적 데이터 처리에 사용 가능한 다차원 컨테이너
- 정교한 브로드캐스팅(broadcasting) 기능
- 파이썬의 자료형 list와 비슷하지만, 더 빠르고 메모리를 효율적으로 관리
- 반복문 없이 데이터 배열에 대한 처리를 지원하여 빠르고 편리
- 데이터 과학 도구에 대한 생태계의 핵심을 이루고 있음
import numpy as np
print(np.__version__)
1.22.2
리스트로 배열 만들기
- 1차원, 2차원, 3차원 배열 numpy로 만들기
import numpy as np
# 1차원
a1 = np.array([1,2,3,4,5])
print(a1)
print(type(a1))
print(a1.shape)
print(a1[0], a1[1], a1[2], a1[3], a1[4])
a1[0] = 4
a1[1] = 5
a1[2] = 6
print(a1)
# 2차원
a2 = np.array([[1,2,3], [4,5,6], [7,8,9]])
print(a2)
print(type(a2))
print(a2.shape)
print(a2[0, 0], a2[1, 1], a2[2, 2])
# 3차원
a3 = np.array([ [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],
[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],
[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] ])
print(a3)
print(type(a3))
print(a3.shape)
[1 2 3 4 5]
<class 'numpy.ndarray'>
(5,)
1 2 3 4 5
[4 5 6 4 5]
[[1 2 3]
[4 5 6]
[7 8 9]]
<class 'numpy.ndarray'>
(3, 3)
1 5 9
[[[1 2 3]
[4 5 6]
[7 8 9]]
[[1 2 3]
[4 5 6]
[7 8 9]]
[[1 2 3]
[4 5 6]
[7 8 9]]]
<class 'numpy.ndarray'>
(3, 3, 3)
배열 생성 및 초기화
- zeros() : 모든 요소를 0으로 초기화
import numpy as np
print(np.zeros(10))
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
- ones() : 모든 요소를 1로 초기화
import numpy as np
print(np.ones(10))
print(np.ones((3, 3)))
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
- full() : 모든 요소를 지정한 값으로 초기화
import numpy as np
print(np.full((3, 3), 1.23))
[[1.23 1.23 1.23]
[1.23 1.23 1.23]
[1.23 1.23 1.23]]
- eye() : 단위행렬(identity matrix) 생성
- 주대각선의 원소가 모두 1이고 나머지 원소는 모두 0인 정사각 행렬
import numpy as np
print(np.eye(3))
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
- tri() : 삼각행렬 생성
import numpy as np
print(np.tri(3))
[[1. 0. 0.]
[1. 1. 0.]
[1. 1. 1.]]
- empty() 초기화되지 않은 배열 생성
- 초기화가 없어서 배열 생성비용 저렴하고 빠름
- 초기화되지 않아서 기존 메모리 위치에 존재하는 값이 있음
import numpy as np
print(np.empty(10))
[ nan 0.00000000e+000 7.66605269e-312 2.02369289e-320
0.00000000e+000 0.00000000e+000 0.00000000e+000 0.00000000e+000
0.00000000e+000 0.00000000e+000]
- _like() : 지정된 배열과 shape가 같은 행렬 생성
- np.zeros_like()
- np.ones_like()
- np.full_like()
- np.empty_like()
import numpy as np
a1 = np.array([1,2,3,4,5])
a2 = np.array([[1,2,3], [4,5,6], [7,8,9]])
a3 = np.array([ [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],
[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],
[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] ])
print(a1)
print(np.zeros_like(a1))
print(a2)
print(np.ones_like(a2))
print(a3)
print(np.full_like(a3, 5))
[1 2 3 4 5]
[0 0 0 0 0]
[[1 2 3]
[4 5 6]
[7 8 9]]
[[1 1 1]
[1 1 1]
[1 1 1]]
[[[1 2 3]
[4 5 6]
[7 8 9]]
[[1 2 3]
[4 5 6]
[7 8 9]]
[[1 2 3]
[4 5 6]
[7 8 9]]]
[[[5 5 5]
[5 5 5]
[5 5 5]]
[[5 5 5]
[5 5 5]
[5 5 5]]
[[5 5 5]
[5 5 5]
[5 5 5]]]
생성한 값으로 배열 생성
- arange() : 정수 범위로 배열 생성
import numpy as np
print(np.arange(0, 30, 2))
[ 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28]
- linspace() : 범위 내에서 균등 간격의 배열 생성
import numpy as np
print(np.linspace(0, 1, 5))
[0. 0.25 0.5 0.75 1. ]
- logspace() : 범위 내에서 균등 간격으로 로그 스케일로 배열 생성
import numpy as np
print(np.logspace(0.1, 1, 20))
[ 1.25892541 1.40400425 1.565802 1.74624535 1.94748304 2.1719114
2.42220294 2.70133812 3.0126409 3.35981829 3.74700446 4.17881006
4.66037703 5.19743987 5.79639395 6.46437163 7.2093272 8.04013161
8.9666781 10. ]
랜덤값으로 배열 생성
- random.random() : 랜덤한 수의 배열 생성
import numpy as np
print(np.random.random((3, 3)))
[[0.06362289 0.17639034 0.20772193]
[0.46259879 0.01849664 0.71713721]
[0.18442221 0.0192996 0.89682728]]
- random.randint() : 일정 구간의 랜덤 정수의 배열 생성
import numpy as np
print(np.random.randint(0, 20, (3, 3)))
[[ 7 7 7]
[ 9 11 6]
[13 8 8]]
- random.normal() : 정규분포(normal distribution)를 고려한 랜덤한 수의 배열 생성
- 평균=0, 표준편자=1, 3 x 3 배열
import numpy as np
print(np.random.normal(0, 1, size=(3, 3)))
[[-1.27090314 -1.93107198 1.56060114]
[-1.29111149 1.13583817 -0.77591768]
[ 0.34463078 1.04852529 -0.41318812]]
- random.rand() : 균등 분포(uniform distribution)를 고려한 랜덤한 수의 배열 생성
import numpy as np
print(np.random.rand(3, 3))
[[0.35351844 0.67890674 0.33750517]
[0.57890248 0.3771841 0.52225883]
[0.9586426 0.32283958 0.10608405]]
- random.randn() : 표준 정규 분포(standard normal distribution) 를 고려한 랜덤한 수의 배열 생성
import numpy as np
print(np.random.randn(3, 3))
[[ 1.1651261 0.88818894 -1.4852731 ]
[-0.28870676 -0.4648225 0.66069888]
[-0.40455942 -0.37380948 -0.28366699]]
표준 데이터 타입
import numpy as np
print(np.zeros(20, dtype=int))
print(np.ones((3,3), dtype=bool)) # 1은 True를 의미
print(np.full((3,3), 1.0, dtype=float))
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[[ True True True]
[ True True True]
[ True True True]]
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
날짜/시간 배열 생성
import numpy as np
date = np.array('2022-02-18', dtype=np.datetime64)
print(date)
print(date + np.arange(12))
datetime = np.datetime64('2022-02-18 12:00')
print(datetime)
datetime = np.datetime64('2022-02-18 12:00:32.43', 'ns')
print(datetime)
2022-02-18
['2022-02-18' '2022-02-19' '2022-02-20' '2022-02-21' '2022-02-22'
'2022-02-23' '2022-02-24' '2022-02-25' '2022-02-26' '2022-02-27'
'2022-02-28' '2022-03-01']
2022-02-18T12:00
2022-02-18T12:00:32.430000000
728x90
'파이썬(Python)' 카테고리의 다른 글
[Python] NumPy 배열 값 삽입/수정/삭제/복사 (0) | 2022.02.18 |
---|---|
[Python] NumPy 배열 조회 (0) | 2022.02.18 |
[Python] 라이브러리 (0) | 2022.02.09 |
[Python] 내장 함수 (0) | 2022.02.09 |
[Python] 예외 처리 (0) | 2022.02.08 |
이 글을 공유하기