[TIL #2] - 데이터 사이언스 스쿨 Numpy 요약

ju_ko·2021년 8월 12일
0

TIL

목록 보기
2/4
post-thumbnail

Numpy 배열

많은 숫자 데이터를 하나의 변수에 넣고 관리 할 때 리스트는 속도가 느리고 메모리를 많이 차지하는 단점이 있다. 배열(array)을 사용하면 적은 메모리로 많은 데이터를 빠르게 처리할 수 있다. 배열은 리스트와 비슷하지만 다음과 같은 점에서 다르다.

1. 모든 원소가 같은 자료형이어야 한다.

2. 원소의 갯수를 바꿀 수 없다.

파이썬은 자체적으로 배열 자료형을 제공하지 않는다. 따라서 배열을 구현한 다른 패키지를 임포트해야 한다. 파이썬에서 배열을 사용하기 위한 표준 패키지는 넘파이(NumPy)다.


배열의 차원과 크기 알아내기

입력
# a = np.array([1, 2, 3])
#배열의 차원과 크기
print(a.ndim)
print(a.shape)
출력 결과
1
(3,)



Numpy의 자료형

넘파이의 배열 즉, ndarray클래스는 원소가 모두 같은 자료형이어야 한다. array 명령으로 배열을 만들 때 자료형을 명시적으로 적용하려면 dtype 인수를 사용한다. 만약 dtype 인수가 없으면 주어진 데이터를 저장할 수 있는 자료형을 스스로 유추한다. 만들어진 배열의 자료형을 알아내려면 dtype 속성을 보면 된다.

입력
x = np.array([1, 2, 3])
x.dtype
출력 결과
dtype('int64')
입력
x = np.array([1.0, 2.0, 3.0])
x.dtype
출력 결과
dtype('float64')



배열의 크기 변형

사용하는 원소의 갯수가 정해저 있기 때문에 reshape 명령의 형태 튜플의 원소 중 하나는 -1이라는 숫자로 대체할 수 있다. -1을 넣으면 해당 숫자는 다를 값에서 계산되어 사용된다.

입력
a.reshape(3, -1)
출력 결과

array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])


차원 축소 연산

x.argmin()  # 최솟값의 위치
x.argmax()  # 최댓값의 위치



정렬

입력
a.sort(axis=1)
a
출력 결과
array([[ 3,  4,  5,  7],
       [ 1,  9, 11, 12],
       [ 1,  2, 14, 15]])

만약 자료를 정렬하는 것이 아니라 순서만 알고 싶다면 argsort 명령을 사용한다.

입력
a = np.array([42, 38, 12, 25])
j = np.argsort(a)
j
출력 결과
array([2, 3, 1, 0])



표본 분산

표본 분산(sample variance)은 데이터와 표본 평균간의 거리의 제곱의 평균이다
표본 분산이 작으면 데이터가 모여있는 것이고 크면 흩어져 있는 것이다.

np.var(x)  # 분산



표본 표준편차

표본 표준편차(sample standard variance)는 표본 분산의 양의 제곱근 값이다.

np.std(x)  # 표준 편차

정수 데이터 카운팅

입력
np.unique([11, 11, 2, 2, 34, 34])
출력 결과
array([ 2, 11, 34])




그러나 unique 함수는 데이터에 존재하는 값에 대해서만 갯수를 세므로 데이터 값이 나올 수 있음에도 불구하고 데이터가 하나도 없는 경우에는 정보를 주지 않는다.
따라서 데이터가 주사위를 던졌을 때 나오는 수처럼 특정 범위안의 수인 경우에는 bincount 함수에 minlength 인수를 설정하여 쓰는 것이 더 편리하다. bincount 함수는 0 부터 minlength - 1 까지의 숫자에 대해 각각 카운트를 한다. 데이터가 없을 경우에는 카운트 값이 0이 된다.

입력
np.bincount([1, 1, 2, 2, 2, 3], minlength=6)
출력 결과
array([0, 2, 3, 1, 0, 0])

0개의 댓글