프로그램 개발/Python

numpy

(ㅇㅅㅎ) 2020. 11. 22. 16:08
728x90
반응형

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