Written on
·
155
1
안녕하세요. 강의 잘 듣고 있습니다.
e = np.arange(0,9).reshape(3,3)
e[np.array([0,2]), np.array([0,1])]을 하면
[0 7]이 나오는데,
왜 [[0 1], [6 7]] 이 아니라 [0 7]이 나오는지 궁금합니다.
감사합니다.
Answer 1
5
안녕하십니까,
e[np.array([0,2]), np.array([0,1])]와 같이 행 인덱스와 열 인덱스에 여러 단일값을 지정하면 넘파이 array의 인덱스는 cross product 형태로 인덱싱하지 않고 동일 축을 기준으로 인덱스 값을 계산하게 됩니다.
즉 [0, 0], [0, 1], [2, 0], [2,1]와 같이 cross product형태로 인덱싱을 하지 않고 동일 축을 기준으로 (0, 0), (2, 1)로 인덱싱을 합니다.
마찬가지 의미로 e[(0,2), (0, 1, 3)]은 cross product를 하지 않기에, 또한 서로 shape가 다르기에 동일축으로 인덱싱 값을 계산할 수 없어서 오류가 발생합니다.
만일 cross product 형태로 인덱싱을 하려면 콤마로 분리된 여러 단일값을 넘파이 인덱스로 부여하지 않고 연속값을 지정합니다.
e[np.array([0,2]), 0:2] 하게 되면 이제 인덱싱은 [0, 0], [0, 1], [2, 0], [2,1] 이 되어서 [[0, 1], [6, 7]] 값이 반환됩니다.
감사합니다.