[Python] Numpy 정리(Ndarray, shape 활용)

PoemSilver·2022년 12월 21일
0

AI 공부

목록 보기
3/7

1. NumPy(Numerical Python)?

파이썬으로 수치해석, 통계 관련 기능(데이터 분석), AI를 구현하려고 할 때 Numpy는 가장 기본이 되는 모듈이다.

NumPy

행렬이나 일반적으로 대규모 다차원 배열을 쉽게 처리 할 수 있도록 지원하는 파이썬의 라이브러리

NumPy 특징 및 장점

☞ 리스트(List)에 비해 연산 처리 속도가 매우 빠름
☞ 반복문 없이 데이터 배열에 대한 처리를 지원함
☞ 선형대수 관련 다양한 기능 제공
☞ 내부 상당부분은 C나 포트란으로 작성되어 실행 속도도 빠른 편
☞ 보통 import numpy as np 로 많이 사용
☞ 리스트와 다르게 한 번 크기를 지정하면 변경 불가능.
크기를 변경하고 싶으면 Numpy array 다시 지정해야한다.
☞ 다이나믹 타이핑(dynamic typing) 지원 안함.

동적 타이핑(dynamic typing)

컴퓨터의 구조를 생각하지 않고 변수를 선언하는 것.
예를 들어 a = 1이라고 입력하면 컴퓨터가 스스로 a는 숫자라고 인식한다.
컴퓨터가 스스로 변수의 type을 인식해야해서 느리다.

정적 타이핑(static typing)

변수를 선언할 때 컴퓨터적 구조를 명시하는 것.
int a = 1 처럼..

파이썬은 보통 동적 타이핑을 사용하지만 numpy는 정적 타이핑을 사용해야함.


아래는 Numpy랑 List를 직관적으로 잘 보여주는 것 같아서 퍼왔다.


2. Ndarray

다차원 배열 객체.
Numpy의 n차원 배열 Ndarray

☞ Like 행렬 연산
☞ 크기 변경 불가
☞ 하나의 data type만 사용 가능

Numpy array 생성하기 : np.array() 사용

>> import numpy as np
>> a = [1,2,3,4]
>> a1 = np.array(a)
>> a1
array([1,2,3,4])
>> b = [[1,2,3,4],[5,6,7,8]]
>> b1 = np.array(b)
>> b1
array([[1,2,3,4],[5,6,7,8]])

*dtype : numpy array의 data type

>> a1.dtype
dtype('int32')
>> b1.dtype
dtype('int32')

원소의 형에 따라 데이터 type이 정해짐

보통 위와 같이 list를 선언해주고 np로 바꿔줌으로써 생성한다.

Numpy array 생성하기 : zeros, ones 사용

>> import numpy as np

zeros : 0으로 구성된 배열 생성

>> c1 = np.zeros(4)
>> c1
array([0., 0., 0., 0.])
>> c1.dtype
dtype('float64')
>> c2 = np.zeros((2,4))
>> c2
array([[0., 0., 0., 0.],
       [0., 0., 0., 0.]])

ones : 1로 구성된 배열 생성

>> d1 = np.ones((2,4))
>> d1
array([[1., 1., 1., 1.],
       [1., 1., 1., 1.]])
>> d1.dtype
dtype('float64')

Numpy array 생성하기 : arrange 사용

arange : range에 대응하는 함수.

>> np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

Numpy array 사용하기

행렬의 차원을 다루는 함수

ndim : 배열의 차원

>> a1.ndim #a1 = array([1,2,3,4])
1
>> b1.ndim #b1 = array([[1,2,3,4],[5,6,7,8]])
2

shape : 행렬의 차원을 표현

>> a1.shape
(4,)
>> b1.shape
(2, 4)

reshape : 배열의 차원 크기를 변경(요소 갯수는 유지)

#b1 = array([[1,2,3,4],[5,6,7,8]])
>> b1.reshape(8,) 
array([1, 2, 3, 4, 5, 6, 7, 8])
# a1 = array([1,2,3,4])
>> a1.reshape(-1,1) #-1은 row 개수를 선정한다
array([[1],
       [2],
       [3],
       [4]])
>> a1.reshape(1,-1)
array([[1, 2, 3, 4]])

flatten : 배열을 1차원 형태로 변경

# b1 = array([[1,2,3,4],[5,6,7,8]])
>> b1.flatten()
array([1, 2, 3, 4, 5, 6, 7, 8])

0개의 댓글