준비
- numpy()로 배열 만들기
- 1D, 2D 및 3D 배열 생성 가능
- reshpe를 사용하여 배열의 모양을 변경할 수 있습니다.
- 인덱싱/슬라이싱 가능
- 배열 간 기본 동작 가능(리스트 동작 불가)
# 라이브러리 불러오기
import numpy as np
– 곱셈
# 배열
a = np.array((1, 2, 3, 4, 5))
print(a)
# 2 곱하기
a = a * 2
print(a)
(1 2 3 4 5)
( 2 4 6 8 10)
– 짝수만 가능
# 배열
a = np.array((1, 2, 3, 4, 5, 6, 7, 8, 9))
print(a)
# 짝수만
a = a(a % 2 == 0)
print(a)
(1 2 3 4 5 6 7 8 9)
(2 4 6 8)
=> 위와 같이 배열을 산술에 사용할 수 있습니다.
1. 어레이 생성
# 1차원 배열
a1 = (1,2,3,4,5)
#배열 변환
b1 = np.array(a1)
print(type(b1)
print(b1)
(1 2 3 4 5)
# 2차원 배열
# 2차원 리스트
a2 = ((1, 2, 3),
(4, 5, 6))
# 배열로 변환
b2 = np.array(a2)
print(type(b2))
print(b2)
((1 2 3)
(4 5 6))
# 3차원 배열
# 3차원 리스트
a3 = (((1, 3, 1),
(4, 7, 6),
(8, 3, 4)),
((6, 2, 4),
(8, 1, 5),
(3, 5, 9)))
# 배열로 변환
b3 = np.array(a3)
print(tyoe(b3))
print(b3)
(((1 2 3)
(4 7 6)
(8 3 4))
((7 2 4)
(8 1 5)
(3 5 9)))
=> np.array()로 배열 생성
1. 배치 확인
-ndim
# 차원 확인
print(b1.ndim) # 1차원
print(b2.ndim) # 2차원
print(b3.ndim) # 3차원
하나
2
삼
=> ndim으로 차원 수를 확인할 수 있습니다.
– 모양
# 형태(크기) 확인
print(b1.shape)
print(b2.shape)
print(b3.shape)
(5,)
(2, 3)
(2, 3, 3)
=> (m, ) : m개의 셀로 구성된 1차원 배열 : 5개의 셀로 구성된 1차원 배열
=> (m,n): m행 n열의 2D 배열: 2행 3열의 2D 배열
=> (z, m, n): z 레이어, m 행, n으로 구성된 3D 배열 : 2 레이어, 3 행, 3 열로 구성된 3D 배열
-dtyp
# 요소 자료형 형식 확인
print(b1.dtype)
print(b2.dtype)
print(b3.dtype)
int32
int32
int32
=> 배열 요소의 데이터 유형, 배열은 하나의 데이터 유형만 가질 수 있습니다.
2. 재정렬 – reshape()
# (2, 3) 형태의 2차원 배열
b2 = np.array(((1, 2, 3),
(4, 5, 6)))
print(b2)
((1 2 3)
(4 5 6))
- (2, 3) → (3, 2) 재정렬
# (3, 2) 형태의 2차원 배열로 Reshape
c2 = b2.reshape(3,2)
# 확인
print(c2)
((1 2)
(3 4)
(5 6))
- (3, 2) → (6, ) 재정렬
# (3, 2) -> 1차원 배열
c3 = c2.reshape(6,)
# 확인
print(c3)
(1 2 3 4 5 6)
*** -1회 사용 : 하나의 행 또는 열 크기만 지정할 수 있습니다.
예) (m, -1) 또는 (-1, n)
# (2, 3) 형태의 2차원 배열
b2 = np.array(((1, 2, 3),
(4, 5, 6)))
print(b2)
((1 2 3)
(4 5 6))
# (-1, n)
c4 = b2.reshape(-1,2)
print(c4)
((1 2)
(3 4)
(5 6))
# (-1, n)
c5 = b2.reshape(-1,3)
print(c5)
((1 2 3)
(4 5 6))
# (m, -1)
c6 = b2.reshape(1,-1)
print(c6)
((1 2 3 4 5 6))
=> -1은 m, n 및 크기의 사양에 따라 변경됩니다.
3. 인덱싱/슬라이싱
# 2차원 배열
b2 = np.array(((1, 2, 3),
(4, 5, 6)))
((1 2 3)
(4 5 6))
- 인덱싱
print('첫 번째 행, 두 번째 열 요소 조회')
print(b2(0, 1))
print('='*20)
print('첫 번째, 두 번째 행 조회')
print(b2((0, 1))) # print(b2((0, 1), :)) 와 같음
print('='*20)
print('첫 번째, 두 번째 열 조회')
print(b2(:, (0, 1)))
print('='*20)
print('두 번째 행 첫 번째 열의 요소 조회')
print(b2((1), (0)))
첫 번째 줄, 두 번째 열 요소 검색
2
=====================
첫 번째, 두 번째 줄에서 검색
((1 2 3)
(4 5 6))
=====================
첫 번째 열과 두 번째 열을 조회합니다.
((1 2)
(4 5))
=====================
두 번째 행의 첫 번째 열 요소 가져오기
(4)
=> 다른 인덱스와 마찬가지로 행과 열 모두 0부터 시작합니다.
- 자르다
print('첫 번째 ~ 두 번째 행 조회')
print(b2(0:2))
print('='*20)
print('첫 번째 행, 첫번 째 ~ 두 번째 열 조회')
print(b2(0, 0:2))
print('='*20)
print('첫 번째 ~ 두 번째 행, 두 번째 ~ 세 번째 열 조회')
print(b2(:, (0, 1)))
1~2줄 검색
((1 2 3)
(4 5 6))
=====================
1행 1~2열 검색
(1 2)
=====================
1~2줄, 2~3열 쿼리
((1 2)
(4 5))
4. 운영
- 배열은 요소별로 편집할 수 있습니다(더하기, 빼기, 곱하기, 나누기, 제곱).
# (2, 2) 형태의 2차원 배열 x, y
x = np.array(((1, 2), (3, 4)))
y = np.array(((5, 6), (7, 8)))
print('x 배열')
print(x)
print()
print('y 배열')
print(y)
x 배열
((1 2)
(3 4))
y 배열
((5 6)
(7 8))
# 더하기
print(x+y) # or print(np.add(x, y))
(( 6 8)
(10 12))
=> 요소별 추가
# 배열 빼기
print(x - y) # or print(np.subtract(x, y))
((-4 -4)
(-4 -4))
=> 요소별 빼기
# 배열 곱하기
print(x * y) # or print(np.multiply(x, y))
((5 12)
(21 32))
=> 요소별 곱셈
# 배열 나누기
print(x / y) # or print(np.divide(x, y))
((0.2 0.33333333)
(0.42857143 0.5 ))
=> 요소로 나누기
# 배열 y 제곱
print(x ** y) # or print(np.power(x, y))
(( 164)
( 2187 65536))
=> 요소당 x^y
# 배열 제곱
print(x ** 2)
((14)
(9 16))
=> 항목당 x^2