numpy+pandas - 2

김찬울·2021년 7월 22일
0

다시 한 번 강조하지만 ndarray에서 슬라이싱과 색인은 완전히 다르다.

슬라이싱은 형태를 유지하지만 색인은 재귀적인 것이므로 배열의 차원마저 바뀐다.
a[:,1]
a[:,1:2]
이 두개는 비슷해보이지만 색인을 하면 색인은 앞의 슬라이싱이 끝난 이후 새롭게 색인을 하는 것이라
차원도 빠져나오고 값도 달라질 수 있다.

또 파이썬은 조건으로 색인을 할 수도 있다.

a1 = np.array[10, 20, 30] 의 ndarray다
이때, a1에서 30보다 작은 값들만 뽑고 싶다면
a1[a1 < 30] 이렇게 적으면 30보다 작은 요소만 가져온다.

팬시 색인

a2 = np.array([10, 20, 30],[40 ,50 ,60]) 일때
30과 50을 가져오고 싶다면 각각의 좌표인 (0,2) , (1,1)을 가져오면 된다 이는 
a2[[0, 1],[2, 1]] 이런식으로 표현 가능

브로드 캐스팅

브로드 캐스팅이 numpy의 최대 장점이라 할 수 있는데
이에는 최소 요소 수가 같아야한다 shape에서 마지막 수가 같아야 한다.

a1 = np.array([10, 20, 30])
a2 = np.array([1, 2])
a1 * a2는 될 수 없다 둘의 요소수는 각각 3, 2이기 때문이다.

Numpy 정리

  • 모듈 import

import numpy as np
자주 같이 쓰이는 것이 plt가 있다.
import matplotlib.pyplot as plt

배열과 선형대수 부분은 본인도 너무 어려워서 추후 공부 후 정리해야할 듯

일단 np는 속도가 빠르기에 일반 for문에 비해서 수십 수백배까지도 차이나게 된다.
그리고 일반적인 패키지나 모듈에서의 함수들을 새롭게 쓰는 것들이 많아서 대부분 기본 함수들도 np.~~~이런식으로 쓰고 없을때 기본 함수를 쓰는 것이 좋다.

cumsum, sum

cumsum은 합계를 더하는데 이를 과정별로 모두 요소로 만든다. (중간합계)
sum으로는 열별, 행별을 따로 더할 수 있다.
axis가 0이면 행을 더하는 것.
axis가 1이면 열을 더하는 것이다.

불리언의 합계는
true는 1 false는 0으로 계산해서 true 의 합계를 알 수 있게 된다.

np.random

np에서는 꽤나 좋은 random을 갖고 있다. 너무 많아 따로 설명할 예정인데
간단히 말하면 난수를 뽑아서 ndarray의 형태로 만든다.

profile
코린코린이

0개의 댓글