0. numpy
import numpy
: python에서 Numpy를 사용하려면 먼저 import 시켜줘야 합니다.
import numpy as np
: numpy를 사용할 때 보편적으로 np라는 약자로 줄어서 사용을 많이 합니다. as 뒤에 원하는 것을 붙여도 좋지만 np로 붙여주는 것이 좋습니다.
1. array(리스트)
: 리스트를 numpy를 사용할 수 있는 ndarray로 변환시켜줍니다.
# array 사용법 import numpy as np array1 = np.array([[1], [2], [3]]) print(array1) |
출력 결과 [[1] [2] [3]] |
2. shape
: ndarray의 모양을 (row, column) 형태로 알려줍니다.
# shape 사용법 import numpy as np array1 = np.array([[1], [2], [3]]) print(array1.shape) |
출력 결과 (3, 1) |
3. ndim
: ndarray의 차원을 알려줍니다.
# ndim 사용법 import numpy as np array1 = np.array([[1], [2], [3]]) print(array1.ndim, "차원") |
출력 결과 2 차원 |
4. dtype
: ndarray의 타입을 알려줍니다.
# dtype 사용법 import numpy as np list1 = [1, 2, 3] array1 = np.array(list1) print(array1, array1.dtype) list2 = [1, 2, 'test'] array2 = np.array(list2) print(array2, array2.dtype) list3 = [1, 2, 3.0] array3 = np.array(list3) print(array3, array3.dtype) |
출력 결과 [1 2 3] int32 ['1', '2' 'test'] <U11 [1. 2. 3.] float64 |
5. astype('type')
: ndarray의 type을 변환시켜줍니다.
# astype 사용법 import numpy as np # int -> float array_int = np.array([1, 2, 3]) array_float = array_int.astype('float64') print(array_float, array_float.dtype) # float -> int array_float1 = np.array([1.1, 2.1, 3.1]) array_int1 = array_float1.astype('int32') print(array_int1, array_int1.dtype) |
출력 결과 [1. 2. 3.] float64 [1 2 3] int32 |
6. arange(n)
: 0 ~ n-1까지 기본적으로 integer형 숫자를 가진 ndarray를 생성한다.
arange(start=n, stop=m)으로도 사용 가능합니다.([n, n+1, n+2, ... , m-1])
# arange 사용법 import numpy as np array1 = np.arange(10) print(array1, array1.dtype, array1.shape) array2 = np.arange(start=1, stop=10) print(array2, array2.dtype, array2.shape) |
출력 결과 [0 1 2 3 4 5 6 7 8 9] int32 (10,) [1 2 3 4 5 6 7 8 9] int32 (9,) |
7. zeros((row, column))
: 모든 값들을 0으로 초기화해줍니다.
# zeros 사용법 import numpy as np zero_array_int = np.zeros((3, 2), dtype='int32') print(zero_array_int, zero_array_int.dtype, zero_array_int.shape) zero_array_float = np.zeros((3, 2), dtype='float64') print(zero_array_float, zero_array_float.dtype, zero_array_float.shape) |
출력 결과 [[0 0] [0 0] [0 0]] int32 (3, 2) [[0. 0.] [0. 0.] [0. 0.]] float64 (3, 2) |
8. ones((row, column))
: 모든 값들을 1로 초기화해줍니다.
# ones 사용법 import numpy as np one_array_int = np.ones((3, 2), dtype='int32') print(one_array_int, one_array_int.dtype, one_array_int.shape) one_array_float = np.ones((3, 2), dtype='float64') print(one_array_float, one_array_float.dtype, one_array_float.shape) |
출력 결과 [[1 1] [1 1] [1 1]] int32 (3, 2) [[1. 1.] [1. 1.] [1. 1.]] float64 (3, 2) |
9. reshape(row, column)
: ndarray를 새롭게 정의합니다. 불가능할 경우 오류가 발생합니다.
row나 column 중 한 개를 -1로 설정할 경우 가능한 수치로 맞추어줍니다.
둘 다 -1일 경우나 가능한 수치를 찾을 수 없을 경우 오류가 발생합니다.
# reshape 사용법 import numpy as np array1 = np.arange(10) print(array1) array2 = array1.reshape(2, 5) print(array2) array3 = array1.reshape(-1, 2) print(array3) |
출력 결과 [0 1 2 3 4 5 6 7 8 9] [[0 1 2 3 4] [5 6 7 8 9]] [[0 1] [2 3] [4 5] [6 7] [8 9]] |
10. tolist(array)
: ndarray를 list로 변환할 수 있습니다.
# tolist 사용법 import numpy as np array1 = np.arange(8) array1_list = array1.tolist() print(array1, array1_list) print('--------------------------------------------') array1_3d = array1.reshape((2, 2, 2)) array1_3d_list = array1_3d.tolist() print(array1_3d, array1_3d_list) |
출력 결과 [0 1 2 3 4 5 6 7] [0, 1, 2, 3, 4, 5, 6, 7] -------------------------------------------- [[[0 1] [2 3]] [[4 5] [6 7]]] [[[0, 1], [2, 3]], [[4, 5], [6, 7]]] |
11. ndarray[n]
: ndarray의 n+1번째 index 위치의 데이터 값을 의미합니다.
# ndarray 사용법 import numpy as np array1 = np.arange(start=1, stop=10) print('array1 :', array1) print('--------------------------------------------') value = array1[2] print('value :', value) print('--------------------------------------------') array1d = np.arange(start=1, stop=10) array2d = array1d.reshape(3, 3) print(array2d) print('--------------------------------------------') for i in range(len(array2d)): for j in range(len(array2d[i])): print('(row={0}, col={1}) value : {2}'.format(i, j, array2d[i, j])) |
출력 결과 array1 : [1 2 3 4 5 6 7 8 9] -------------------------------------------- value : 3 -------------------------------------------- [[1 2 3] [4 5 6] [7 8 9]] -------------------------------------------- (row=0, col=0) value : 1 (row=0, col=1) value : 2 (row=0, col=2) value : 3 (row=1, col=0) value : 4 (row=1, col=1) value : 5 (row=1, col=2) value : 6 (row=2, col=0) value : 7 (row=2, col=1) value : 8 (row=2, col=2) value : 9 |
12. slicing[n:m]
: ndarray의 부분 추출이 가능합니다.
slicing[n:m]의 경우 index n부터 index m-1까지 추출합니다.
slicing[n:]의 경우 index n부터 끝까지 추출합니다.
slicing[:m]의 경우 index 0부터 index m-1까지 추출합니다.
# slicing 사용법 import numpy as np array1 = np.arange(start=1, stop=10) array1_1 = array1[0:3] print("[0:3] ->", array1_1) print('--------------------------------------------') array1_2 = array1[:3] print("[:3] ->", array1_2) print('--------------------------------------------') array1_3 = array1[3:] print("[3:] ->", array1_3) print('--------------------------------------------') array1_4 = array1[:] print("[:] ->", array1_4) |
import numpy as np array1d = np.arange(start=1, stop=10) array2d = array1d.reshape(3, 3) print('--------------------2 D---------------------') print("ORIGINAL\n", array2d) print('--------------------------------------------') print("[0:2, 0:2]\n", array2d[0:2, 0:2]) print('--------------------------------------------') print("[1:3, 0:3]\n", array2d[1:3, :]) print('--------------------------------------------') print("[:2, 0]\n", array2d[:2, 0]) |
출력 결과 | |
[0:3] -> [1 2 3] -------------------------------------------- [:3] -> [1 2 3] -------------------------------------------- [3:] -> [4 5 6 7 8 9] -------------------------------------------- [:] -> [1 2 3 4 5 6 7 8 9] |
--------------------2 D--------------------- ORIGINAL [[1 2 3] [4 5 6] [7 8 9]] -------------------------------------------- [0:2, 0:2] [[1 2] [4 5]] -------------------------------------------- [1:3, 0:3] [[4 5 6] [7 8 9]] -------------------------------------------- [:2, 0] [1 4] |
13. Indexing & tolist
# indexing & tolist import numpy as np array1d = np.arange(start=1, stop=10) array2d = array1d.reshape(3, 3) print('ORIGINAL\n', array2d) print('--------------------------------------------') print("[[0, 1], 2] ->", array2d[[0,1], 2].tolist()) print('--------------------------------------------') print("[[0, 1], 0:2] ->", array2d[[0, 1], 0:2].tolist()) print('--------------------------------------------') print("[[0, 1]] ->", array2d[[0, 1]].tolist()) |
출력 결과 ORIGINAL [[1 2 3] [4 5 6] [7 8 9]] -------------------------------------------- [[0, 1], 2] -> [3, 6] -------------------------------------------- [[0, 1], 0:2] -> [[1, 2], [4, 5]] -------------------------------------------- [[0, 1]] -> [[1, 2, 3], [4, 5, 6]] |
14. Boolean Indexing
# Boolean Indexing import numpy as np array1 = np.arange(start=1, stop=10) print("ORIGINAL\n", array1) print('--------------------------------------------') array2 = array1[array1 > 5] print('array1[array1 > 5] \n', array2) print('--------------------------------------------') print(array1 > 5) print('--------------------------------------------') boolean_indexes = np.array([True, False, False, False, False, True, True, True, True]) array3 = array1[boolean_indexes] print('Boolean index로 필터링한 결과 :', array3) print('--------------------------------------------') indexes = np.array([5, 6, 7, 8]) array4 = array1[indexes] print('일반 index로 필터링 결과 :', array4) |
출력 결과 ORIGINAL [1 2 3 4 5 6 7 8 9] -------------------------------------------- array1[array1 > 5] [6 7 8 9] -------------------------------------------- [False False False False False True True True True] -------------------------------------------- Boolean index로 필터링한 결과 : [1 6 7 8 9] -------------------------------------------- 일반 index로 필터링 결과 : [6 7 8 9] |
15. sort(ndarray)
: ndarray를 정렬해 줍니다. 기본적으로 오름차순으로 정렬합니다.
row는 axis=0이고, column은 axis=1입니다.
# sort 사용법 import numpy as np original_array = np.array([3, 1, 9, 5]) print('ORIGINAL\n', original_array) print('--------------------------------------------') sort_array1 = np.sort(original_array) print('np.sort() 호출 후 반환된 정렬 행렬 :', sort_array1) print('np.sort() 호출 후 원본 행렬 :', original_array) print('--------------------------------------------') original_array.sort() print('original_array.sort() 호출 후 원본 행렬 :', original_array) print('--------------------------------------------') sort_array1_desc = np.sort(original_array)[::-1] print('내림차순으로 정렬 :', sort_array1_desc) print('--------------------------------------------') array2d = np.array([[8, 12], [7, 1]]) print("ORIGINAL\n", array2d) print('--------------------------------------------') sort_array2d_row = np.sort(array2d, axis=0) print('row 방향으로 정렬:\n', sort_array2d_row) print('--------------------------------------------') sort_array2d_col = np.sort(array2d, axis=1) print('column 방향으로 정렬:\n', sort_array2d_col) |
출력 결과 ORIGINAL [3 1 9 5] -------------------------------------------- np.sort() 호출 후 반환된 정렬 행렬 : [1 3 5 9] np.sort() 호출 후 원본 행렬 : [3 1 9 5] -------------------------------------------- original_array.sort() 호출 후 원본 행렬 : [1 3 5 9] -------------------------------------------- 내림차순으로 정렬 : [9 5 3 1] -------------------------------------------- ORIGINAL [[ 8 12] [ 7 1]] -------------------------------------------- row 방향으로 정렬: [[ 7 1] [ 8 12]] -------------------------------------------- column 방향으로 정렬: [[ 8 12] [ 1 7]] |
16. argsort()
: 정렬된 값의 인덱스를 얻을 수 있습니다.
# argsort 사용법 import numpy as np org_array = np.array([3, 1, 9, 5]) sort_indices_asc = np.argsort(org_array) print("행렬 오름차순 정렬 시 원본 행렬의 인덱스 :", sort_indices_asc) print('--------------------------------------------') org_array = np.array([3, 1, 9, 5]) sort_indices_desc = np.argsort(org_array)[::-1] print("행렬 내림차순 정렬 시 원본 행렬의 인덱스 :", sort_indices_desc) print('--------------------------------------------') name_array = np.array(['Kim', 'Lee', 'Park', 'Sung', 'Shin']) score_array = np.array([78, 95, 84, 98, 88]) sort_indices = np.argsort(score_array) print('성적 오름차순 정렬 시 score_array의 인덱스 :', sort_indices) print('성적 오름차순으로 name_array의 이름 출력 :', name_array[sort_indices]) |
출력 결과 행렬 오름차순 정렬 시 원본 행렬의 인덱스 : [1 0 3 2] -------------------------------------------- 행렬 내림차순 정렬 시 원본 행렬의 인덱스 : [2 3 0 1] -------------------------------------------- 성적 오름차순 정렬 시 score_array의 인덱스 : [0 2 4 1 3] 성적 오름차순으로 name_array의 이름 출력 : ['Kim' 'Park' 'Shin' 'Lee' 'Sung'] |
17. dot
: 행렬의 내적을 계산해줍니다.
# dot 사용법 import numpy as np A = np.array([[1, 2, 3], [4, 5, 6]]) B = np.array([[7, 8], [9, 10], [11, 12]]) dot_product = np.dot(A, B) print('행렬 내적 결과:\n', dot_product) |
출력 결과 행렬 내적 결과: [[ 58 64] [139 154]] |
18. transpose
: 전치 행렬해줍니다.
# transpose 사용법 import numpy as np A = np.array([[1, 2], [3, 4]]) transpose_mat = np.transpose(A) print('A의 전치 행렬\n', transpose_mat) |
출력 결과 A의 전치 행렬 [[1 3] [2 4]] |
'프로그램 개발 > Python' 카테고리의 다른 글
[python] 정규표현식 예시 모음 (0) | 2022.11.29 |
---|---|
[python] 뫼비우스 함수 (0) | 2022.11.26 |
[python] 소인수분해 (0) | 2022.11.25 |
[python] 소수 판별하기 (0) | 2022.11.24 |
[python] 약수 구하기 (0) | 2022.11.09 |