Contents

  • TOC {:toc}

numpy array에 관한 글

fancy indexing과 indexing

Z = np.zeros(9)
Z1 = Z[:3] # indexing
Z1 = 1
Z2 = Z[[0,1,2]] # fancy indexing
Z2 = 1
Z1.base is Z # True
Z2.base is Z # False

fancy indexing은 copy를 반환하고 indexing은 원래 객체의 view를 반환한다. 비슷한 맥락으로 평탄화 method인 flatten은 copy를 반환하지만 ravel은 view를 반환한다. torch에서는 copy를 얻기 위해서는 명시적으로 clone method를 사용해야 된다.

multiply, add를 쓰면 불필요한 copy가 안 생긴다

X = np.ones(9)
Y = np.ones(9)
Z = X*2 + Y*3
np.multiply(X, 2, out=X)
np.multiply(Y, 3, out=Y)
np.add(X, Y, out=X)

Vectorization에 관한 글