프로그래밍/Python

파이썬 데이터 분석 준비! - Numpy배열 다루기 - 3(배열 응용하기)

Dibrary 2022. 3. 29. 10:00
반응형

안녕하세요 Dibrary입니다.

이번에는 그동안 배운 Numpy배열을 응용해 볼 것입니다.

Numpy를 사용할 때 중요한 점은, 

배열 단위로 연산을 한다는 것

이게 중요합니다. Numpy배열로 만들어놓고, 기존 list 처럼 계산 하면 Numpy의 장점이 드러나지 않습니다.

 

 


먼저 임의의 Numpy배열을 만들고,

Numpy배열에 곧바로 비교 연산자를 사용하니 True, False로 결과가 나오죠?
True인 것만 데이터가 있다는 의미 입니다.

 

그러면, 이렇게 True / False로 나오는 결과를 활용할 수 있습니다.

예를 들어, 각 회사마다 매출액이 Numpy배열로 만들어져 있다고 할 때, 특정 회사의 매출액만 볼 수 있는 것입니다.

바로 이렇게요. 지금 names == 'samsung' 문장은 위에서 True / False 배열을 반환할 텐데, 이게 sales 배열의 index로 들어가서 True인 index만 나옵니다.

 

근데 지금 제가 예로 든 데이터는 200과 20이 있죠? 이 두 개 중에 20 만 뽑아내고자 한다면? 

list 방식으로 슬라이싱 해도 되고, Numpy배열 방식의 슬라이싱을 하셔도 됩니다.

근데 딱 봐도 Numpy배열에서 곧바로 슬라이싱 하는 게 더 편해 보이죠?
(list 슬라이싱에서 [0]이 들어간 이유는 sales에서 값을 뽑아냈을 때, 리스트 내부의 리스트로 값이 들어가 있기 때문입니다.)

 

 

당연하게도 조건을 여러개 걸 수 있습니다.

조건이 좀 길어서 tmp1이라는 변수로 만들어 놓고 Numpy배열에 적용 해보았습니다. 
apple, samsung, ms에 해당되는 index의 값이 그대로 나온 것을 확인 할 수 있습니다.

주의하실 점은, tmp1에서 인덱스 순서는 1, 3, 0이지만, 값은 0, 1, 3 인덱스 위치 순서대로 값이 나온다는 것입니다.

 

 


조건 자체를 인덱스로 주면 어떨까요? 가능합니다.

temp라는 임의 배열을 만들고, 0, 3, 1인덱스 위치의 값을 가져온 것입니다.

위에서 True / False로 가져올때와 다르게 0, 3, 1 인덱스 위치의 값이 그대로 유지되는 것을 볼 수 있습니다.!

! 주의 !    반드시 대괄호가 2개씩 사용되어야 인덱스로 값을 가져올 수 있다는 것.  [[  ]]

 

 


Numpy배열도 수학의 배열에서 할 수 있는 연산을 지원합니다.

transpose 함수를 사용하시면, 대각선을 기준으로 값들이 대칭됩니다. 이를 tmp1의 '전치 행렬'이라고 부릅니다.

근데 더 간단하게 전치시킬 수 있는 방법이 있습니다. T 하나만 써주시면 됩니다.

 

 

 

내적도 가능합니다.

1*10+2*20 이 50이 되었고, 3*10 + 4*20이 110이 되었습니다.

내적은 반드시 앞 배열의 '열' 갯수와 뒷 배열의 '행' 갯수가 같아야 합니다. (이는 수학에서도 똑같죠)

 

 

우선 Numpy에 대해서 이정도를 아신다면, 간단하게 데이터 처리는 원하는대로 잘라내고, 붙여넣고, 변경하고 하실 수 있습니다.

728x90
반응형