기록하는삶

[파이썬/Python] Numpy 모듈 (2) 본문

AI/파이썬(Python)

[파이썬/Python] Numpy 모듈 (2)

mingchin 2022. 1. 21. 02:18
728x90
반응형

지난 글에 이어 작성한다.

 

6) Comparisons

numpy의 비교 연산 역시 element wise operation이다.

any는 각각 원소에 비교 연산을 진행하여 하나라도 참이면 True, 그렇지 않으면 False를 반환한다.

all은 각각 원소에 비교 연산을 진행하여 모두 참이면 True, 그렇지 않으면(하나라도 거짓이면) False를 반환한다.

np.isfinite()을 통해 발산 여부를 확인하거나 np.isnan()을 통해 NAN(Not a Number)값 여부를 확인할 수 있다.

 

array끼리의 비교도 가능하다. boolean을 원소로 갖는 array를 반환해준다.

복수의 조건에 대한 and/or 연산의 결과를 구할 수도 있고,

특정 boolean array에 not 연산을 적용할 수도 있다.

np.where을 활용하면 특정 조건을 만족하는 index들을 구하거나, 조건을 만족하는지 여부에 따라 각 index에 특정 값을 넣은 같은 shape의 array를 만들 수 있다.

np.argmax()와 np.argmin()은 element 중 최댓값과 최솟값의 index를 반환한다. list와 유사하게 최대 혹은 최소의 값이 여러 개라면 가장 작은 index를 반환한다.

axis 지정이 가능한데, axis 방향으로 묶어냈을 때 묶음 안에서의 최대 혹은 최소의 index를 반환한다고 생각하면 된다. 위의 예시(axis = 0)에서는 세로로 세 번 묶었을 때 각각 2, 8, 8이 최대이므로 [1,0,1]을 반환하고, 아래의 예시(axis = 1)에서는 가로로 두 번 묶었을 때 각각 8,8이 최대이므로 [1,2]를 반환한다.

 

7) boolean index & fancy index

① boolean index

array에 같은 shape을 갖는 boolean array를 index로 할당해주면 True인 값만 반환해주는 것을 이용해, 특정 조건을 만족하는 element만 추출하는 것이 가능하다. 이는 pandas에서도 빈번하게 사용하기 때문에 잘 익혀두는 것이 좋다.

조건을 만족하는 원소들을 모아 flatten한 배열을 반환하게 된다.

 

② fancy index

 

또 다른 배열을 index로 활용해, 특정 배열에서의 element를 반복 추출하여 새로운 배열을 만들 수 있다.

이때 index를 부여하는 b의 경우 shape이 a와 같을 필요는 없지만, 그 element들이 a가 가진 index의 범위를 초과해서는 안된다. (a가 index를 0~5를 가지기 때문에 6이 들어가면 error 발생)

위처럼 2차원 행렬에 대해 b,c를 index로 던지면 순서대로 (0,0), (1,1), (2,2) ... (2,0) 위치의 원소들을 담은 배열을 반환한다. array.take()에 같은 길이의 index를 담은 배열을 tuple로 담아 던지면 해당 index들로 만들어낸 배열을 순서대로 담은 array를 반환한다.

728x90
반응형