본문 바로가기

AI/Python Module

Numpy

넘파이 객체의 속성

- ndim : 배열의 축(차원)의 수

- shape : 배열의 형태

- size : 배열 내 원소의 총 개수

- dtype : 배열 내 원소들의 자료형

 

import numpy as np

a = np.array([[1,2,3], [1,5,9], [3,5,7]])

print(a.ndim, a.shape, a.size, a.dtype) # 각각 차원수, 배열 형태, 총 원소 개수, 배열 내 원소들의 자료형

 

 


넘파이 객체 생성

 

- numpy.zeros : 모든 배열의 원소가 0인 배열 생성

- numpy.ones : 모든 배열의 원소가 1인 배열 생성

- numpy.empty : 배열의 크기만 정해주고, 원소는 초기화 되지 않은 배열 생성

- numpy.arange : 배열의 원소들이 수열을 구성

- numpy.full : 배열의 모든 값이 하나의 상수인 배열 생성

- numpy.random.random : 배열의 원소를 0부터 1사이의 임의의 값으로 생성

 

# 모든 배열의 원소가 0인 배열 생성
a = np.zeros((2,3))
print(a)

 

# 모든 배열의 원소가 1인 배열 새애성
a = np.ones((2,3))
print(a)

 

# 원소값을 초기화하지 않은 배열 생성
a = np.empty((2,2))
print(a)

 

# 10부터 30전까지 5단위로 배열 생성
a = np.arange(10,30,5)
print(a)

 

# 원소가 모두 4인 배열 생성
a = np.full((2,2), 4)
print(a)

 

# 3x3 크기의 단위행렬 생성
a = np.eye(3)
print(a)

 

# 임의값을 가지는 배열 생성
a = np.random.random((3,3))
print(a)

 

 


넘파이 기본 연산

 

넘파이 배열 생성

a = np.array([1,2,3])
b = np.array([10,20,30])
c = np.array([[1,2],
            [3,4]])
d = np.array([[10,20],
            [30,40]])

 

- 배열 합

# 배열 합
print(a+b)
print(np.add(a,b))

 

- 배열 차

# 배열 차
print(a-b)
print(np.subtract(a,b))

 

 

- 제곱 연산

# 제곱 연산
print(a**2)

 

- 논리 연산

# 논리 연산
print(b<15)

 

- 원소별 곱셈

# 원소별 곱셉
print(c*d)

 

- 배열 내적 계산(행렬곱)

# 내적 (dot product) 계산, 다른 말로 행렬곱
print(np.dot(c,d))

 


축을 기준으로 한 연산

- 배열 생성

a = np.array([[1,2,3,4],
             [5,6,7,8],
             [1,3,5,7]])

 

- 0축, 열을 기준으로 한 덧셈

# 0축, 즉 열을 기준으로 한 덧셈
print(a.sum(axis = 0))

 

- 1축, 행을 기준으로 한 덧셈

# 1축, 즉 행을 기준으로 한 덧셈
print(a.sum(axis = 1))

 

- 각 행에서의 최대값

# 각 행에서의 최대값
print(a.max(axis = 1))

 

 


넘파이 배열의 인덱싱, 슬라이싱

 

- 배열 생성

a = np.array([1,2,3,4,5,6,7])

 

- 배열의 첫번째 원소

print(a[0])

 

- 마지막 원소

# 마지막 원소
print(a[-1])

 

- 인덱스값 2부터 5까지의 원소

# 인덱스값 2부터 5를 가지는 원소 전까지
print(a[2: 5])

 

- 다차원 배열의 인덱싱, 슬라이싱

# 다차원 배열의 인덱싱, 슬라이싱
n = np.array([[1,2,3],
             [4,5,6],
             [7,8,9]])

# 다차원 배열의 인덱싱
print(n[1,2])

# 1열의 모든 원소
print(n[:,1])

# 마지막 행
print(n[-1])

 

 


넘파이 배열을 이용한 배열 형태 변환

 

- ndarray.ravel() : 배열을 1차원 배열로 변환

- ndarray.reshape() : 배열의 형태를 바꿈

- ndarray.T : 트렌스포즈 된 배열 생성, 행렬의 트렌스포즈와 같음

 

- 배열 생성

a = np.array([[1,2,3,4],
             [5,6,7,8],
             [9,10,11,12]])

 

- 1차원 배열로 변환

# 1차원 배열(벡터)로 변환
print(a.ravel())

 

- 배열 형 변환

# (2,6) 형태로 배열 형태 변환
print(a.reshape(2,6))

# reshape의 경우 특정한 행, 열만 지정해도 나머지는 자동으로 수행
print(a.reshape(4, -1))
print(a.reshape(-1, 2))

 

- 배열 트랜스포즈

# 배열 트랜스포즈
print(a.T)

 


넘파이 브로드캐스팅

 

- 넘파이는 브로드캐스팅 기능을 통해 다른 형태의 배열끼리도 연산이 가능

a = np.array([[1,2,3],[4,5,6],[7,8,9]])
b = np.array([1,0,1])
y = np.empty_like(a) # 배열 a와 크기가 같은 원소가 비어있는 배열 생성

c = a+b
print(c)

 

 

 

 

반응형

'AI > Python Module' 카테고리의 다른 글

pip 패키지 관리자  (0) 2022.07.18
Pandas #Series #DataFrame #인덱스 활용  (0) 2021.11.29
Python #eunjeon, mecab 모듈 설치  (0) 2021.10.21
Python #KoNLPy  (0) 2021.10.19
PyAutoGUI #파이썬 마우스 키보드 이벤트 제어  (0) 2021.10.17