본문 바로가기

Study/AI

넘파이(Numpy) - 비교 연산과 데이터 추출

728x90

1. 비교 연산

연산 결과는 항상 불린형(boolean type)을 가진 배열로 추출

 

- 브로드캐스팅 비교 연산

하나의 스칼라 값과 벡터 간의 비교 연산은 벡터 내 전체 요소에 적용

In import numpy as np
x = np.array([4, 3, 2, 6, 8, 5])
x > 3
Out array([ True, False, False, True, True, True])

- 요소별 비교 연산

두 개의 배열 간 배열 구조(shape)가 동일한 경우 같은 위치에 있는 요소들끼리 비교 연산

[1 > 2, 3 > 1, 0 > 7]과 같이 연산이 실시된 후 이를 반환

In x = np.array([1, 3, 0])
y = np.array([2, 1, 7])
x > y
Out array([False, True, False])

2. 비교 연산 함수

- all과 any

all 함수: 배열 내부의 모든 값이 참일 때는 True, 하나라도 참이 아닐 경우 False 반환

(and 조건을 전체 요소에 적용)

 

any 함수: 배열 내부의 값 중 하나라도 참일 때는 True, 모두 거짓일 경우 False 반환

(or 조건을 전체 요소에 적용)

In x = np.array([4, 6, 7, 3, 2])
(x > 3)
Out array([ True, True, True, False, False])
In (x > 3).all()
Out False
In (x > 3).any()
Out True

- 인덱스 반환 함수

where 함수: 배열이 불린형으로 이루어졌을 때 참인 값들의 인덱스를 반환

In x = np.array([4, 6, 7, 3, 2])
x > 5
Out array([False, True, True, False, False])
In np.where(x>5)
Out (array([1, 2], dtype=int64),)

True/False 대신 참/거짓인 경우의 값을 지정할 수 있음

In x = np.array([4, 6, 7, 3, 2]) np.where(x>5 , 10, 20)
Out array([20, 10, 10, 20, 20])

- 정렬된 값의 인덱스를 반환해주는 함수

argsort: 배열 내 값들을 작은 순서대로 인덱스를 반환

argmax: 배열 내 값들 중 가장 큰 값의 인덱스를 반환

argmin: 배열 내 값들 중 가장 작은 값의 인덱스를 반환

In x = np.array([4, 6, 7, 3, 2])
np.argsort(x)
Out array([4, 3, 0, 1, 2], dtype=int64)
In np.argmax(x)
Out 2
In np.argmin(x)
Out 4

3.인덱스를 활용한 데이터 추출

- 불린 인덱스

배열에 있는 값들을 반환할 특정 조건을 불린형의 배열에 넣어서 추출

 - 인덱스에 들어가는 배열은 불린형이어야 함

 - 불린형 배열과 추출 대상이 되는 배열의 구조가 같아야 함

In x = np.array([4, 6, 7, 3, 2])
x > 3
Out array([ True, True, True, False, False])
In cond = x > 3
x[cond]
Out array([4, 6, 7])
In x.shape
Out (5,)
In cond.shape
Out (5,)

- 팬시 인덱스

정수형 배열의 값을 사용하여 해당 정수의 인덱스에 위치한 값을 반환

 - 인덱스 항목에 넣을 배열은 정수로만 구성되어야 함

 - 정수 값의 범위는 대상이 되는 배열이 가지는 인덱스의 범위 내 대상이 되는 배열과 인덱스 배열의 구조가 같을 필요는       없음

In x = np.array([4, 6, 7, 3, 2])
cond = np.array([1, 2, 0, 2, 2, 2,], int)
x[cond]
Out array([6, 7, 4, 7, 7, 7])
In x.take(cond)
Out array([6, 7, 4, 7, 7, 7])
In x = np.array([[1,4], [9,16]], int)
a = np.array([0, 1, 1, 1, 0, 0], int)
b = np.array([0, 0, 0, 1, 1, 1], int)
x[a,b]
Out array([ 1, 9, 9, 16, 4, 4])

 

728x90

'Study > AI' 카테고리의 다른 글

House Prices - Advanced Regression Techniques  (0) 2024.04.11
Titanic Survival Prediction  (1) 2024.04.10
넘파이(Numpy) - 배열 연산  (0) 2023.04.09
넘파이(Numpy) - 배열 객체 다루기  (2) 2023.04.09
데이터의 이해  (0) 2023.04.02