일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 자바스크립트 node
- 자바스크립트 기본 문법
- 자바스크립트 객체
- 보안뉴스 요약
- 파이썬
- ES6
- 자바스크립트
- 깃허브
- javascript
- Oracle SQL
- 다크웹
- 자바스크립트 element api
- GIT
- numpy
- 오라클
- oracle db
- 보안뉴스 한줄요약
- 카카오프로젝트
- 자바스크립트 prototype
- php
- 카카오프로젝트 100
- 랜섬웨어
- 보안뉴스
- python
- 보안뉴스한줄요약
- 자바스크립트 jQuery
- oracle
- 보안뉴스요약
- 카카오프로젝트100
- 자바스크립트 API
- Today
- Total
FU11M00N
[ Numpy ] numpy 조건문, 배열의 비교연산 , and or ! , where 본문
import numpy as np
import matplotlib.pyplot as plt
- 배열의 비교연산
기본 원리는 배열에 참과 거짓값으로 이뤄진 배열을 입력하여 참인 부분에 해당하는 원소만을 억세스 할 수 있도록 제공합니다.
x = np.arange(3)
print( x[[True, False, True]])
행렬에 비교연산을 수행 시 참과 거짓으로 이뤄진 배열을 얻어낼 수 있습니다.
아래의 예시는 x의 짝여부를 조건으로 연산한 결과 입니다
print(x % 2 == 0)
그럼 해당 조건을 활용해 x에 배열 인덱스 값으로 입력하게 됩니다.
즉 배열에 특정 조건을 만족시키는 원소를 포함시키는 배열을 추출 할 수있습니다.
print(x[ x % 2 == 0])
- Logical OR, And, Not 연산
Numpy 배열은 and, or, not 연산을 지원하지 않습니다.
x1,x2 = np.array([True, False]), np.array([True, True])
print(x1 or x2) #error
logical을 사용하여 가능하기도 합니다.
print( np.logical_and(x1, x2))
하지만 logical 까지 붙이면 기니깐 아래와 같이 "&" ,"|" , "~" 로도 사용가능합니다.
logical_or : or 연산 ( | )
logical_and : and 연산 ( & )
logical_not : not 연산 ( ~ )
x1,x2 = np.array([True, False]), np.array([True, True])
print( x1 & x2 )
print( x1 | x2 )
print( ~x1 )
- 다중 조건 사용
0부터 9까지 2와 3의 배수를 추출하는 코드를 다중 조건을 사용하면 아래와 같습니다.
x = np.arange(10)
print( x[ np.logical_or( x % 2 == 0 , x % 3 == 0 )] )
아래는 이중배열을 적용한것입니다.
2차원 배열의 0,3,6,9 번째 줄에 0을 입력하는 코드입니다.
x[x%10%3 == 0] = 0
print(x)
- 배열의 조건부 대입
3으로 나눴을때 나머지가 1이면 0으로 출력하고싶다면 아래와같이 가능합니다.
arr = np.arange(100).reshape(10,10)
arr[(arr%10%3==1) | ((arr/10).astype('int')%3==1)] = 0 #3으로 나눴을때 나머지가 1이면 0으로 출력
print(arr)
- where 함수
단순 조건문으로 해결하기 어려울때는 np.where을 사용하여 더욱 더 복잡한 작업을 할 수 있습니다.
where 함수는 조건에 맞을 경우와 틀릴경우 두가지 값을 구성된 배열을 리턴해줍니다.
where(조건 , 참인경우의 값, 거짓인 경우의 값)
아래의 예제 where은 arr중 3보다 크면 1 작으면 0을 리턴합니다.
arr = np.array([1,2,3,4,5])
np.where(arr > 3 , 1, 0 )
고정 값뿐만 아니라 다른 배열의 값을 사용할 수있습니다.
아래의 예제에는 [0,1,2,3,4] 순차 배열인 x 배열의 조건을 사용하여 arr의 짝수번째 값만 0으로 바꾼 arr을 리턴합니다.
arr = np.array([10,5,3,9,1])
x = np.arange(5)
np.where( x % 2 == 0 , arr , 0)
(n,1) 배열과 (1,m) 크기의 배열을 연산하여 행렬곱 연산을 사용하는 경우 더욱 다양한 형태의 배열값을 다룰 수 있습니다.
아래의 예제는 3 x 4 의 격자의 축을 각각 x, y 배열로 리턴합니다.
x, y = np.ogrid[:3, :4] # x,y = range(3).reshpae(3,1), range(4) 와 같은 뜻
print(x, y , sep = "\n")
두 배열을 조건 연산으로 사용할때 자동적으로 (3,4) 의 배열이 구성되면서 조건이 적용됩니다.
아래는 이것을 활용해 대각선 값만 access 할 수있는 예제입니다.
np.where(x == y, 1, 0)
위를 조금 응용하면 10x10의 대각선에 순차 값을 넣을수도있습니다.
x,y = np.ogrid[:10, :10]
np.where(x == y , y , 0)
- 문제
x축과 y축을 더했을때 작수인 배열을 만들면 아래와 같습니다.
arr=np.arange(100).reshape(10,10)
x,y = np.ogrid[:10, :10]
np.where((x + y)%2==0, arr , 0)
'AI > Numpy' 카테고리의 다른 글
[ Numpy ] 회귀분석 , 선형 회귀분석 , sklearn.linear_model , 결정계수 (0) | 2021.04.05 |
---|---|
[ Numpy ] numpy 변환 (append, concatenate, c_, r_ , swap, flip) (0) | 2021.03.29 |
[ Numpy ] 랜덤데이터 활용, 확산 직선, 군집데이터 (0) | 2021.03.29 |
[ Numpy ] Numpy 배열 연산 (0) | 2021.03.22 |
[ Numpy ] Numpy 라이브러리 활용(숫자연산, 수학연산, 조건연산) ,사인 코사인 (0) | 2021.03.22 |