본문 바로가기
Appz Knowledge/Python

NumPy/넘파이 이해해 보려고...

by 스쳐가는인연 2023. 2. 25.

NumPy 기초
https://numpy.org/


import numpy as np

np.array([list or nested_list]) # list 생성
np.arrange(start_point, end_point, step) # start_point 부터 end_point 직전까지의, step(생략가능) 간격으로 list 생성

np.zeros(count) # count 수 만큼의 '0'으로 채워진 float list 생성
np.zeros((x, y)) # x행, y열의 '0'으로 채워진 list 생성
np.ones(count) # '1'로 채움
np.ones((x, y))

np.linspace(start_point, end_point, specific_count) # start_point 와 end_point를 포함하여, specific_count 수만큼 일정/균등 간격이 되도록 나열한 list 생성
e.g.) np.linespace(0, 10, 3) # 0, 5, 10

np.eye(count) # identity array / 분류

np.random. # 다양한 종류의 기능 확인 가능
np.random.rand(count) #0과 1 사이의 난수 생성
np.random.rand(x, y) # x행과 y열의 배열 생성
np.random.randn() # -1과 1 사이의 난수 생성
np.random.randn(x, y)
np.random.randint(start_point, endpoint, count) # start_point와 end_point 직전까지의, count 수만큼의 난수 생성
np.random.randint(start_point, endpoint, (x, y)) # start_point와 end_point 직전까지의, x, y의 난수 array 생성

np.randdom.seed(value) # 난수로 생성될 특정 값을 지정하고 싶을 때, 코드 검증 시 등 활용
np.random.rand() # seed 값이 같으면, 수행 시 항상 같은 값이 지정됨


arr = np.arange(25)
ranarr = np.random.randint(0, 50, 10)

arr.shape # array 크기 확인 가능
arr.reshape(x, y) # x, y 배열로 변경. reshare 시 요소를 모두 포함할 수 있도록 커야함

ranarr.max() #최대값 확인
ranarr.argmax() # 최대값의 인덱스
ranarr.min() # 최소값
ranarr.argmin()
ranarr.dtype # 자료형


arr = np.arange(0, 11)
arr[8] # 8번째 인덱스의 값
arr[1:5] # 1번째 부터 5번째 직전 인덱스의 값

arr[0:5] # 처음부터 5번째 직전 인덱스의 값
arr[:5] # 처음부터 5번째 직전 인덱스의 값 / '0'은 생략 가능

arr[5:] # 5번째 부터 끝까지 / 마지막 인덱스는 생략 가능

브로드캐스트
arr[0:5] = 100 # 0부터 4번째 인덱스의 값을 100으로 할당


Note. Index는 포인터 처럼 동작한다.
arr = np.arange(0, 11)
slice_of_arr = arr[0:5]

arr # 0 ~ 10까지의 리스트
slice_of_arr # 0 ~ 4까지의 리스트

slice_of_arr[:] = 99 # 값을 99로 할당

arr # 값이 99로 변경됨
slice_of_arr # 당연히 변경됨

arr_copy = arr.copy() # array를 복제
arr_cop[:] = 100 # 값을 100으로 할당

arr # 값이 변경되지 않음
arr_copy # 당연히 변경됨


연산가능(브로드캐스트)
arr = np.arange(0, 10)
arr +5 # 각 요소에 연산
arr - 2
arr + arr
arr * arr
arr - arr
arr / arr

1/0 # 오류 발생
1/arr # 부분 경고발생하나 연산됨 (index 0은 0 > infinit)

np.sqrt(arr)
np.sin(arr)
np.log(arr)

arr.sum() # 요소를 모두 합계
arr.mean() # 평균
arr.max() # 최대값
arr.std()

bool_arr = arr > 4 # 비교 연산 결과를 bool 값으로 반환
arr[bool_arr] # 실제 값을 반환

arr[arr > 4] # 한문장으로 줄임

arr2d = arr2dnp.arange(0, 25).reshape(5, 5)
arr2d.sum() # 요소를 모두 합계
arr2d.sum(axis=0) # 각 행별 요소 합계를 list로 출력 [0,0]+[1,0]+[2,0]+[3,0]+[4,0], [0,1]+[1,1]+[2,1]+[3,1]+[4,1]...
arr2d.sum(axis=1) # 각 열별 요소 합계를 list로 출력 [0,0]+[0,1]+[0,2]+[0,3]+[0,4], [1,0]+[1,1]+[1,2]+[1,3]+[1,4]...

arr_2d = np.array([5, 10, 15], [20, 25, 30], [35, 40, 45])
arr_2d.shape # x, y 배열
arr_2d[index] # index list를 반환
arr_2d[index][index] # x, y 값을 반환
arr_2d[index, index] # x, y 값을 반환

arr_2nd[:2, 1:] # 특정/부분 값만 반환

 

 

 

 

 

반응형