본문 바로가기
개발/Python

[파이썬, Python] numpy 활용법 총정리

by 꾀돌이 개발자 2024. 7. 7.
반응형

 

[파이썬 numpy 활용법]

 

 

* 아래 [더보기] 클릭 후 [Ctrl + F] 단축키를 활용하여 찾고 계신 함수 위치로 바로 가실 수 있습니다.

더보기
더보기

[배열 생성 및 조작]
1. 배열 생성: np.array, np.zeros, np.ones, np.empty, np.arange, np.linspace, np.eye
2. 배열 조작: np.reshape, np.ravel, np.transpose, np.concatenate, np.split


[배열 연산]
1. 기본 연산: np.add, np.subtract, np.multiply, np.divide, np.power
2. 통계 함수: np.mean, np.median, np.std, np.var, np.min, np.max, np.sum, np.cumsum
3. 선형대수: np.dot, np.matmul, np.linalg.inv, np.linalg.eig, np.linalg.svd


[유틸리티 함수]
1. 배열 탐색 및 정렬: np.where, np.unique, np.sort, np.argsort, np.argmax, np.argmin

 

 

[배열 생성 및 조작]

 

1. 배열 생성

  • np.array(object): 입력 데이터를 배열로 변환합니다.
  • np.zeros(shape): 주어진 형태의 배열을 0으로 초기화하여 생성합니다.
  • np.ones(shape): 주어진 형태의 배열을 1로 초기화하여 생성합니다.
  • np.empty(shape): 주어진 형태의 초기화되지 않은 배열을 생성합니다.(배열을 생성할 때 메모리를 할당만 하고 초기화하지 않기 때문에 생성된 배열의 원소값은 예측할 수 없는 값이 됩니다.)
  • np.arange(start, stop, step): 주어진 간격으로 값의 배열을 생성합니다.
  • np.linspace(start, stop, num): 시작과 끝 값을 포함하여 일정 간격으로 나눈 num 개의 값을 가지는 배열을 생성합니다.
  • np.eye(N): N x N 단위 행렬을 생성합니다.
import numpy as np

# 배열로 변환
arr = np.array([1, 2, 3])
print(arr)
# 출력값 : [1, 2, 3]

# 0으로 초기화된 배열 생성
zeros = np.zeros((2, 3))
print(zeros)
# 출력값 : [[0, 0, 0], [0, 0, 0]]

# 1로 초기화된 배열 생성
ones = np.ones((2, 3))
print(ones)
# 출력값 : [[1, 1, 1], [1, 1, 1]]

# 초기화되지 않은 배열 생성
empty = np.empty((2, 3))
print(empty)
# 출력값 : [[1, 1, 1], [1, 1, 1]]

# 간격을 지정하여 배열 생성
arange = np.arange(0, 10, 2)
print(arange)
# 출력값 : [0, 2, 4, 6, 8]

# 일정 간격으로 나눈 배열 생성
linspace = np.linspace(0, 1, 5)
print(linspace)
# 출력값 : [0, 0.25, 0.5, 0.75, 1]

# 단위 행렬 생성
eye = np.eye(3)
print(eye)
# 출력값 : [[1, 0, 0], [0, 1, 0], [0, 0, 1]]

 

 

2. 배열 조작

  • np.reshape(array, new_shape): 배열의 형태를 변경합니다.
  • np.ravel(array): 배열을 1차원으로 변환합니다.
  • np.transpose(array): 배열의 전치를 구합니다.
  • np.concatenate((a1, a2, ...), axis=0): 배열을 주어진 축을 따라 연결합니다.
  • np.split(array, indices_or_sections): 배열을 여러 부분으로 나눕니다. (indices_or_sections가 정수라면 배열을 지정된 개수의 하위 배열로 균등하게 나누고, indices_or_sections가 인덱스 배열이라면 배열을 지정된 인덱스를 기준으로 나눕니다.)
import numpy as np

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

# 배열 형태 변경
reshaped = np.reshape(arr, (3, 2))
print(reshaped)
# 출력값 : [[1, 2], [3, 4], [5, 6]]

# 1차원으로 변환
raveled = np.ravel(arr)
print(raveled)
# 출력값 : [1, 2, 3, 4, 5, 6]

# 전치
transposed = np.transpose(arr)
print(transposed)
# 출력값 : [[1, 4] [2, 5] [3, 6]]

# 배열 연결
a1 = np.array([1, 2, 3])
a2 = np.array([4, 5, 6])
concatenated = np.concatenate((a1, a2), axis=0)
print(concatenated)
# 출력값 : [1, 2, 3, 4, 5, 6]

# 배열 나누기 1
a1 = np.array([1, 2, 3, 4, 5, 6])
split_arr = np.split(a1, 2)
print(split_arr)
# 출력값 : [array([1, 2, 3]), array([4, 5, 6])]

# 배열 나누기 2
a1 = np.array([1, 2, 3, 4, 5, 6])
split_arr = np.split(a1, [1, 3])
print(split_arr)
# 출력값 : [array([1]), array([2, 3]), array([4, 5, 6])]

 

 

[배열 연산]

 

1. 기본 연산

  • np.add(a, b): 요소별 덧셈을 수행합니다.
  • np.subtract(a, b): 요소별 뺄셈을 수행합니다.
  • np.multiply(a, b): 요소별 곱셈을 수행합니다.
  • np.divide(a, b): 요소별 나눗셈을 수행합니다.
  • np.power(a, b): 요소별 거듭제곱을 계산합니다.
import numpy as np

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

# 덧셈
add = np.add(a, b)
print(add)
# 출력값 : [5, 7, 9]

# 뺄셈
sub = np.subtract(a, b)
print(sub)
# 출력값 : [-3, -3, -3]

# 곱셈
mul = np.multiply(a, b)
print(mul)
# 출력값 : [4, 10, 18]

# 나눗셈
div = np.divide(a, b)
print(div)
# 출력값 : [0.25, 0.4, 0.5]

# 거듭제곱
power = np.power(a, 2)
print(power)
# 출력값 : [1, 4, 9]

 

 

2. 통계 함수

  • np.mean(array): 배열의 평균을 계산합니다.
  • np.median(array): 배열의 중앙값을 계산합니다.
  • np.std(array): 배열의 표준편차를 계산합니다.
  • np.var(array): 배열의 분산을 계산합니다.
  • np.min(array): 배열에서 최솟값을 찾습니다.
  • np.max(array): 배열에서 최댓값을 찾습니다.
  • np.sum(array): 배열 요소의 합을 계산합니다.
  • np.cumsum(array): 배열 요소의 누적 합을 계산합니다.
import numpy as np

arr = np.array([1, 2, 3, 4, 5])

# 평균
mean = np.mean(arr)
print(mean)
# 출력값 : 3.0

# 중앙값
median = np.median(arr)
print(median)
# 출력값 : 3.0

# 표준편차
std = np.std(arr)
print(std)
# 출력값 : 1.4142135623730951

# 분산
var = np.var(arr)
print(var)
# 출력값 : 2.0

# 최소값
min_val = np.min(arr)
print(min_val)
# 출력값 : 1

# 최대값
max_val = np.max(arr)
print(max_val)
# 출력값 : 5

# 합계
sum_val = np.sum(arr)
print(sum_val)
# 출력값 : 15

# 누적 합계
cumsum_val = np.cumsum(arr)
print(cumsum_val)
# 출력값 : [1, 3, 6, 10, 15]

 

 

3. 선형대수

  • np.dot(a, b): 두 배열의 내적을 계산합니다.
  • np.matmul(a, b): 두 배열의 행렬곱을 계산합니다.
  • np.linalg.inv(array): 역행렬을 계산합니다.
  • np.linalg.eig(array): 행렬의 고유값과 고유벡터를 계산합니다.
  • np.linalg.svd(array): 행렬의 특이값 분해를 수행합니다.
import numpy as np

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

# 내적
dot = np.dot(a, b)
print(dot)
# 출력값 : [[19 22] [43 50]]

# 행렬곱
matmul = np.matmul(a, b)
print(matmul)
# 출력값 : [[19 22] [43 50]]

# 역행렬
inv = np.linalg.inv(a)
print(inv)
# 출력값 : [[-2.   1. ] [ 1.5 -0.5]]

# 고유값과 고유벡터
eigvals, eigvecs = np.linalg.eig(a)
print(eigvals)
print(eigvecs)
# 출력값 eigvals: [-0.37228132  5.37228132]
# 출력값 eigvecs: [[-0.82456484 -0.41597356] [ 0.56576746 -0.90937671]]

# 특이값 분해
U, S, V = np.linalg.svd(a)
print(U)
print(S)
print(V)
# 출력값 U : [[-0.40455358 -0.9145143 ] [-0.9145143   0.40455358]]
# 출력값 S : [5.4649857  0.36596619]
# 출력값 V : [[-0.57604844 -0.81741556] [ 0.81741556 -0.57604844]]

 

 

[유틸리티 함수]

 

1. 배열 탐색 및 정렬

  • np.where(condition, [x, y]): 조건에 따라 요소를 선택합니다.
  • np.unique(array): 배열의 고유 요소를 찾습니다.
  • np.sort(array): 배열을 정렬합니다.
  • np.argsort(array): 배열 정렬 후 원래 인덱스를 반환합니다.
  • np.argmax(array): 배열에서 최댓값의 인덱스를 찾습니다.
  • np.argmin(array): 배열에서 최솟값의 인덱스를 찾습니다.
import numpy as np

arr = np.array([1, 5, 3, 4, 2])

# 조건에 따라 요소 선택
where = np.where(arr > 2, arr, -1)
print(where)
# 출력값 : [-1  5  3  4 -1]

# 고유 요소 찾기
a1 = np.array([1, 5, 3, 4, 2, 1, 3, 5])
unique = np.unique(a1)
print(unique)
# 출력값 : [1 2 3 4 5]

# 배열 정렬
sorted_arr = np.sort(arr)
print(sorted_arr)
# 출력값 : [1 2 3 4 5]

# 정렬 후 원래 인덱스 반환
argsorted_arr = np.argsort(arr)
print(argsorted_arr)
# 출력값 : [0 4 2 3 1]

# 최대값의 인덱스
argmax = np.argmax(arr)
print(argmax)
# 출력값 : 1

# 최소값의 인덱스
argmin = np.argmin(arr)
print(argmin)
# 출력값 : 0

 

반응형