수업정리/python

numpy 정리

맵람다장인 2023. 8. 23. 17:33

 

https://colab.research.google.com/drive/1c_IPOmIsRW_M0TR8iBB1syYubZPOaGnk#scrollTo=y4pP-V9s6oyx

 

Google Colaboratory Notebook

Run, share, and edit Python notebooks

colab.research.google.com

 

1. numpy 불러오기

import numpy as np

 

2. list => numpy

arr = np.array(list)로 numpy array 생성 가능

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

list2 = [[1,2,3], [4,5,6]]
arr2 = np.array(list2)
print(arr2) # [[1 2 3] [4 5 6]]

 

3. 배열 모양, 차원, 크기

shape  : 배열의 모양
ndim   : 배열의 차원
size   : 배열의 크기

dtype : 배열의 타입

print(arr.shape) # (5,)
print(arr2.shape) # (2, 3)
print(arr2.ndim) # 2
print(arr.dtype) # int32

 

4. array 생성

0값으로 채워진 배열 생성 : np.zeros( {행, 열} )

1값으로 채워진 배열 생성 : np.ones( (행,열) )

내가 원하는 값으로 채워진 배열 생성 : np.full((행,열), 원하는 값)

print(np.zeros((2,4)))
print(np.ones((2,4)))
print(np.full((3,3),7))

 

 

5. 난수 배열 생성하기

1. 랜덤 값 생성하기 - 0~1 사이 실수 값으로 구성: np.random.rand(행갯수, 열갯수)

2. 랜덤값, 사이즈 지정 : np.random.randint(최소,최대-1,size=(행,열))

3. 타입 지정하여 배열 생성 : arr_type = np.array([1.2, 3.4, 5.6, 7.2] , dtype='int')

4. 배열의 타입 변경 : astype()

np.random.rand(2,3)
#array([[0.66154162, 0.5970674 , 0.3209585 ],
#       [0.31752974, 0.85276552, 0.41839742]])

for i in range(20):
  print(np.random.randint(3,10), " ", end="")
#6  8  9  8  6  9  7  5  5  7  7  8  6  8  3  6  5  9  4  8  

np.random.randint(3,10,size=(2,3))
# array([[5, 7, 6],
#       [7, 3, 3]])

arr_type = np.array([1.2, 3.4, 5.6, 7.2] , dtype='int')
arr_type
# array([1, 3, 5, 7])

arr_type.astype('float')
# array([1., 3., 5., 7.])

 

6. 배열의 인덱싱, 슬라이싱

1. arr[행][열]

2. arr[행,열]

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

 

7. 배열 크기 재지정, 슬라이싱

reshape, reshape시 size가 서로 동일해야 오류 안남.

arr2 = np.arange(50).reshape(5,10)
"""
array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
       [30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
       [40, 41, 42, 43, 44, 45, 46, 47, 48, 49]])
"""

2차원 배열 슬라이싱
[행의 범위, 열의 범위]

arr2[0:2][0:5] # (X)
arr2[0:2, 0:5] # (O)
arr2[[2,3],[1,2]] # 요소 각각을 가져오고 싶을 때

 

8. BMI 실습(파일 불러오기)

np.loadtxt('파일명.확장자')

delimiter : 구분 기호

data = np.loadtxt('height_weight.txt', delimiter=",")
data

 

9. Boolean 색인

데이터를 True, False 리스트로 원하는 것만 보여줄 수 있다.

score = np.array([80,70,65,43,77,54])
bool_li = [True, False, False, True, True, False]
score[bool_li]

 

 

10. 유용한 numpy 함수들

함수 설명
abs, fabs 각 원소의 절댓값을 구함
sqrt 제곱근 계산
square 제곱 계산
Exp 지수 e 계산
log, log10, log2, logp 자연로그, 로그10, 로그2, 로그(1+x)
sign 각 원소 부호 계산
ceil 올림
floor 버림
rint 반올림, dtype 유지
modf 몫과 나머지를 각각 배열로 반환
isnan 숫자인지 nan인지 나타내는 불리언 배열
cos, cosh, sin, sinh, tan, tanh 삼각함수, 쌍곡삼각함수
logical_not 각원소의 not 계산, (= -arr)
maximum, fmax 두 원소중 큰 값을 반환
minimun, fmin 두 원소 중 작은 값 반환
mod 첫번째 배열 % 두번째 배열, 나머지 계산