데이터 분석

<파이썬 데이터 분석가 되기 - 1주차> 01장. 수치 계산 라이브러리, 넘파이

난쟁이 개발자 2025. 1. 19. 14:17
반응형

1. Numpy 불러오기

import numpy as np

2. Array 생성

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

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

                   [[7,8,9],
                    [10,11,12]],

                   [[-1,-2,-3],
                    [-4,-5,-6]]])

# 배열 초기화
zeros = np.zeros((2, 3))      # [[0. 0. 0.], [0. 0. 0.]]
ones = np.ones((3, 2))        # [[1. 1.], [1. 1.], [1. 1.]]

# arange 와 linspace
arange = np.arange(0, 10, 2)  # [0 2 4 6 8]
linspace = np.linspace(0, 1, 5)  # [0.   0.25 0.5  0.75 1. ]

# 랜덤 배열 생성
rand = np.random.random((2, 2))       # Random values [0, 1)
randn = np.random.randn(2, 2)         # Standard normal distribution
randint = np.random.randint(0, 10, (2, 2)) # Random integers

3. array의 상태 확인

shape = arr2.shape  # (2, 2)
dim = arr2.ndim     # 차원 (2)
dtype = arr2.dtype  # 데이터 타입 (e.g., int32, float64)
size = arr2.size    # Total number of elements (4)

4. 기본적인 연산

# 요소별 연산
sum_arr = arr1 + arr1  # [2 4 6]
prod_arr = arr1 * 2    # [2 4 6]

# 집계 함수
arr = np.array([1, 2, 3, 4])
total = np.sum(arr)      # 10
mean = np.mean(arr)      # 2.5
max_val = np.max(arr)    # 4
min_val = np.min(arr)    # 1
cum_sum = np.cumsum(arr) # array([1, 3, 6, 10])
arg_max = np.argmax(arr) # 3	

# 축 기반 연산 (2차원 배열)
matrix = np.array([[1, 2], [3, 4]])
row_sum = np.sum(matrix, axis=1)  # [3 7]
col_sum = np.sum(matrix, axis=0)  # [4 6]

# 행렬 곱셈 (Matrix multiplication)
A = [[1, 1], [0, 1]]
B = [[2, 0], [3, 4]]
mat_mul = A @ B		# [[5, 4], [3, 4]]

5. 인덱싱과 슬라이싱

# 1차원 배열
arr = np.array([10, 20, 30, 40, 50])
value = arr[2]         # 30
slice_arr = arr[1:4]   # [20 30 40]

# 2차원 배열
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
value = matrix[1, 2]       # 6
row = matrix[0, :]         # [1 2 3]
col = matrix[:, 1]         # [2 5 8]
sub_matrix = matrix[0:2, 1:3]  # [[2 3], [5 6]]

# Boolean 인덱싱
bool_arr = matrix > 5          # [[False False False], [False False True], [True True True]]
filtered = matrix[matrix > 5]  # [6 7 8 9]

6. Array 조작

# 형태 변경
# reshape : 원본 유지, 새로운 데이터 생성
arr = np.arange(6).reshape(2, 3)  # [[0 1 2], [3 4 5]]
# resize : 원본 변형, 메모리 관리에 유리
arr = np.arange(6).resize(2, 3)	  # [[0 1 2], [3 4 5]]

# 전치 행렬
transposed = np.transpose(arr)    # [[0 3], [1 4], [2 5]]

# Flatten
flattened = arr.flatten()         # [0 1 2 3 4 5]

# 배열 연결
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
concatenated = np.concatenate([arr1, arr2])  # [1 2 3 4 5 6]

# 배열 쌓기
stacked_v = np.vstack([arr1, arr2])  # 수직으로 쌓기
stacked_h = np.hstack([arr1, arr2])  # 수평으로 쌓기

 

반응형