[Python] Numpy 완전정복2 - 연산, 벡터, 무작위, 수정
[Python] Numpy 완전정복2 - 연산, 벡터, 무작위, 수정
Numpy 완전정복1에 이어서 Numpy의 기초적인 문법에 대해 정리하고 자주 사용하게 될 유용한 함수들을 정리해두었습니다!
1. Numpy 연산
Numpy에서는 다양한 통계 연산 메소드들을 제공합니다. 이 메소드들로 데이터에 다양한 연산을 쉽게 수행할 수 있습니다.
np.mean(변수명) #산술평균
np.average(변수명, weights = [원소별 가중치]) #가중평균
np.median(변수명) #중위수
np.cumsum(변수명) #누적합
np.std(변수명) #표준편차
np.var(변수명) #분산
np.min(변수명) #최솟값
np.max(변수명) #최댓값
np.sum(변수명) #원소들의 합
np.dot(변수명1, 변수명2) #행렬곱
또한 최솟값, 최댓값이 위치한 인덱스를 반환하는 함수가 존재해 특정 데이터를 찾을 때 유용하게 사용할 수 있습니다.
np.argmin(변수명) #최솟값이 위치한 인덱스
np.argmax(변수명) #최댓값이 위치한 인덱스
x[x.argmax()] #최댓값 반환
x[x.argmin()] #최솟값 반환
정렬과 관련된 메소드들도 존재합니다.
np.argsort(변수명)
위 메소드를 사용하면 원본의 인덱스 번호가 오름차순으로 정렬한 후에 어떤 자리에 위치할지 표기합니다.
y = np.argsort(x)
x[y] #수행하면 x를 오름차순으로 정렬한 결과를 반환
np.searchsorted(변수명, 넣을 데이터)
메소드를 사용하면 각각의 원소를 변수에 넣고 오름차순 정렬하면 몇번째 인덱스에 위치하게 될지를 반환합니다.
2. 영벡터, 일벡터
넘파이에서는 영벡터와 일벡터를 만들 수 있는 메소드들을 제공합니다.
np.zeros((row, column))
np.ones((row, column))
을 통해 내가 원하는 차원의 영벡터, 일벡터를 쉽게 생성할 수 있습니다.
a1 = np.zeros(5) #0을 5개 포함한 벡터 생성
a2 = np.zeros((2,1)) #2행 1열의 영벡터 생성
b1 = np.ones(5) #1을 5개 포함한 벡터 생성
b2 = np.ones((2,1)) #2행 1열의 일벡터 생성
3. 무작위 배열
넘파이에서는 랜덤한 수를 뽑아주는 메소드들을 제공합니다.
랜덤과 관련된 메소드들은 np.random 뒤에 각각의 메소드명을 붙여 사용할 수 있습니다.
1) 0과 1 사이의 랜덤한 수 선정
np.random.rand(n) #0과 1사이에서 임의로 n개의 수를 선정하여 반환
2) 특정 범위 내에서 정수를 랜덤하게 선정(복원추출)
np.random.randint(시작점, 끝점+1, size = n) #지정한 범위 내에서 n개의 정수를 반환
randint 메소드는 복원추출을 기본으로 하기 때문에 중복된 값이 선정될 수 있습니다.
3) 특정 범위 내에서 중복되지 않는 정수를 랜덤하게 선정(비복원추출)
np.random.choice(특정 범위를 담은 ndarray, n, replace = False) #ndarray에 담긴 원소들 중 n개를 비복원추출로 선정
*replace = True로 설정할 경우 복원추출을 진행합니다.
4) 랜덤한 수를 추출하되, 한번 추출한 결과를 동일하게 고정하여 사용 - seed 설정
np.random.seeed(임의의 숫자)위 코드를 작성한 뒤 랜덤 메서드를 사용하게 되면 추출하는 수를 고정시켜주게 됩니다.여러 명이 작업할 때, 동일한 결과를 얻어내기 위해 사용합니다.
4. 데이터 수정
넘파이에서도 파이썬에서 기본적으로 제공하는 데이터 수정 메소드들을 제공합니다.
np.insert(변수명, 인덱스값, 넣을 데이터) #특정 위치에 새로운 값을 추가할 때
np.append(변수명, 넣을 데이터) #맨 마지막 위치에 새로운 값을 추가할 때
np.delete(변수명, 삭제할 인덱스값) #특정 위치의 값을 제거할 때
#4번째 자리에 55를 넣는 방법
a = np.insert(a, 4, 55)
#맨 마지막 자리에 55를 넣는 방법
a = np.insert(a, -1, 55) #인덱스가 -1이면 맨 마지막 자리
a = np.append(a, 55)
#4번째 자리의 자료를 삭제할 때
np.delete(a, 4)
5. 데이터 병합
두 데이터를 하나의 데이터로 합치고 싶을 때 사용할 수 있는 메소드들이 존재합니다.
np.concatenate((변수명1, 변수명2), axis = 1 or 0)
axis = 0으로 설정하면 변수1 아래에 변수2를 붙여 데이터를 합쳐줍니다,
axis = 1로 설정하면 변수1의 오른쪽에 변수2를 붙여 데이터를 합쳐줍니다.
concatenate와 동일하게 사용할 수 있는 다른 메소드는 vstack, hstack이 있습니다.
np.vstack((변수명1, 변수명2)) #수직, axis = 0과 동일
np.hstack((변수명1, 변수명2)) #수평, axis = 1과 동일