Jin's Dev Story

[Python] Numpy(넘파이) 본문

Programming Language/Python

[Python] Numpy(넘파이)

woojin._. 2024. 6. 13. 09:00

설치 방법

  • vscode에 python설치, 주피터 설치

넘파이

파이썬으로 행렬, 수치 계산 등 데이터를 다루기 쉽게 도와주는 유명 데이터 조작 라이브러리

N차원 배열 생성 - np.array()

  • 코드
import numpy as np

# 1차원 배열
arr = np.array([1, 2, 3])
print(arr)
>> [1 2 3]

print(type(arr))
>> <class 'numpy.ndarray'>

#2차원 배열
arr = np.array([[1, 2, 3],
                [4, 5, 6]])
print(arr)
>> [[1 2 3]
    [4 5 6]]

#튜플로 1차원 배열 만들기
tpl = (4, 5, 6)
arr = np.array(tpl)
print(arr)
>> [4 5 6]

#리스트로 2차원 배열 만들기
lst = [[1, 2, 3], [4, 5, 6]]
arr = np.array(lst)
print(arr)
>> [[1 2 3]
    [4 5 6]]

0으로 가득찬 배열 생성 - np.zero(())

np.zeros((3, 6))

Shape 확인하기 - arr.shape

  • 배열의 형상
    • 형상이란 N차원 배열에서 그 배열의 ‘각 차원의 크기(원소 수)’
  • 코드
# 형상(shape) 확인하기
arr = np.array([1, 2, 3])  # 1차원 배열
print(arr.shape)
>> (3,)

arr2 = np.array([[1, 2, 3], [4, 5, 6]]) # 2차원 배열
print(arr2.shape)
>> (2, 3)

배열끼리의 연산 - n1.dot(n2)

  • 배열끼리 곱하기
n2 = np.array([3, 6, 9])

print(n1.dot(n2))

>> 126

시리즈 생성 - pd.Series

# pd.Series의 옵션이 무엇이 있는지 확인
# index => 할당값의 지정 이름, 중복 가능['a','a', 'b', 'c']
# dtype => 대표적 : int, float, string, boolean 등
series = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'], dtype=float)
series

정렬 - sort_values()

  • 오름차순
series = pd.Series([10, 2, 5, 4], index=['a','b','c','d'], dtype=float)
series.sort_values(ascending=True) # 오름차순(기본값)

  • 내림차순
series.sort_values(ascending=False) # 내림차순

reshape - np.reshape()

  • 값 재배열
  • ex) np.arange(12) → array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
  • ex) np.arange(12).reshape(3, 4) → array([[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]])
  • 코드
np.arange(12)
>> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])

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

ndim/size

  • ndim → 해당 배열의 차원
  • size → 해당 배열의 칸 수
  • 코드
arr = np.array([1, 2, 3])
print(arr.ndim)
>> 1

print(arr.size) #해당 배열의 칸 수 확인하기
>> 3

arr2 = np.array([[1, 2, 3],[4, 5, 6]])
print(arr2.ndim) #해당 배열의 차원 확인하기
>> 2

print(arr2.size) #해당 배열의 칸 수 확인하기
>> 6

dtype

  • 배열의 데이터 타입
  • 코드
arr = np.array([1.1, 2.2, 3.3])
print(arr.dtype)
>>> float64

arr = np.array([1.1, 2.2, 3.3], dtype=int)
print(arr)
>> [1 2 3]

print(arr.dtype)
>> int32

arr = np.array([1, 2, 3, 0], dtype=bool)
print(arr)
>> [True True True False]

arange

  • 1씩 증가하는 1차원 배열
  • 코드
print(np.arange(10))  # 시작이 0부터
> [0 1 2 3 4 5 6 7 8 9]

print(np.arange(5, 10)) # 시작이 5부터
>> [5 6 7 8 9]

예제

  • 데이터를 2배 해야하는 경우
data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 파이썬의 경우
answer =[]

for di in data:
    answer.append(2 * di)
answer

# 벡터화 연산 사용 시
x = np.array(data)
x
>> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

2 * x
>> array([0, 2, 4, 6, 8, 10, 12, 14, 16, 18])

L = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(2 * L)
>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

random

  • rand
    • 균일분포에서 추출
  • randn
    • normal 분포를 추출설치 방법

'Programming Language > Python' 카테고리의 다른 글

[Python] Pandase(판다스)  (0) 2024.06.13
[Python] 시각화할 때 한글 깨지는 경우  (0) 2024.06.13
[Python] 정규 표현식(RegExp)  (0) 2024.06.13
[Python] Math.gcd - 최대공약수  (0) 2024.06.12
[Python] 내장 함수  (0) 2024.06.12