< boolean 연산 >
Boolean 연산은 참(True) 또는 거짓(False) 값을 반환하는 연산을 말한다. NumPy에서는 이러한 Boolean 연산을 배열에 적용하여 각 요소의 조건을 평가할 수 있다. 예를 들어, 배열의 각 요소가 특정 조건을 만족하는지 여부를 판단하는 데 사용된다.
- 비교 연산자: == (equal), != (not equal), >, <, >=, <= 등의 연산자를 사용하여 배열의 요소 간 비교가 가능하다.
- 논리 연산자: & (and), | (or), ~ (not) 등의 논리 연산자를 사용하여 여러 조건을 결합할 수 있다.
코드 예시를 통해서 공부해보자.
# 100 시드값을 갖고 100개의 정수안에서 랜덤하게 4행 5열의 데이터를 생성해보자
np.random.seed(100)
x = np.random.randint(1, 100, (4,5))
x
array([[ 9, 25, 68, 88, 80],
[49, 11, 95, 53, 99],
[54, 67, 99, 15, 35],
[25, 16, 61, 59, 17]])
# x가 80보다 큰 데이터를 가져오시오.
x > 80
array([[False, False, False, True, False],
[False, False, True, False, True],
[False, False, True, False, False],
[False, False, False, False, False]])
x[ x > 80 ] # 난이도 중요도 최상!
array([88, 95, 99, 99])
# 여성이고, 자녀가 둘 이상이며, 40세 이상이고, 월 소비금액이 100만원 이상인 고객분들 데이터를 가져와라
# 고객 전체 데이터는 x
# 성별 == 여자 and/ 자녀수 >= 2 and/ 나이 >= 40 and/ 월소비금액 >= 1000000
# <조건문> 상단 예시는 데이터를 가져와라 즉 데이터를 억세스 하라는 말인데 조건문은 데이터를 엑세스 하지 않고, 그냥 조건에 맞을경우 행동을 하라는 형식임.
age = 50
gender = '여자'
if age >= 40 and gender == '여자' :
print('40세 이상 여성입니다.')
elif age >= 40 and gender == '남자' :
print('40세 이상 남자입니다.')
40세 이상 여성입니다.
# x의 데이터 중에서, 50보다 크고 80보다 작은 데이터만 가져오시오
x
array([[ 9, 25, 68, 88, 80],
[49, 11, 95, 53, 99],
[54, 67, 99, 15, 35],
[25, 16, 61, 59, 17]])
x > 50
array([[False, False, True, True, True],
[False, False, True, True, True],
[ True, True, True, False, False],
[False, False, True, True, False]])
x < 80
array([[ True, True, True, False, False],
[ True, True, False, True, False],
[ True, True, False, True, True],
[ True, True, True, True, True]])
x > 50 and x < 80
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[172], line 1
----> 1 x > 50 and x < 80
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
# 오류가 발생되는데 numpy에서는 and 사용문을 & 기호로 사용하여 데이터 억세스 기능으로 사용 한다. (numpy는 기계 친화적인 라이브러리 이다.)
(x > 50) & (x < 80)
array([False, False, False, False, False, False, False, False, False])
x[ (x > 50) & (x < 80) ]
array([], dtype=int32)
### 맞는 값이 없기때문에 값이 출력되지 않는다. 다른 예시를 실행해 보자
# x가 50 보다 작거나 80 보다 큰 데이터만 가져오시오.
x < 50
array([ True, True, True, True, True, True, True, True, True])
x > 80
array([False, False, False, False, False, False, False, False, False])
# numpy에서는 or 사용문을 | 기호로 사용하여 데이터 억세스 기능으로 사용 한다.
x[(x < 50) | (x > 80)]
array([ 2, 3, 4, 5, 6, 7, 8, 9, 10])
# if를 활용한 조건문은 백앤드 개발에만 사용되고 데이터 분석은 이렇게 데이터 어레이를 할줄 알아야함
# 데이터 분석과 백앤드 개발을 모두 할줄 아는것이 중요함
< Arithmetic operations and Broadcasting >
브로드캐스팅은 NumPy에서 배열 간의 연산을 수행할 때, 서로 다른 형상(shape)을 가진 배열 간에도 연산을 가능하게 하는 메커니즘이다. 브로드캐스팅은 배열의 형상(shape)이 다를 때 자동으로 배열의 형상을 재구성하여 연산을 수행한다.
1차원 배열 연산
# 결과값은 numpy
data = [10,20,5,8,10,33,56,9,11,45,87,9,22,548,362,92] => 리스트
data
[10, 20, 5, 8, 10, 33, 56, 9, 11, 45, 87, 9, 22, 548, 362, 92]
# (1) 모든 데이터 값에 5씩 더해서 출력하려면 반복문 사용 (기본이다 외워라)
new_data = []
for item in data :
new_data.append(item+5)
new_data
[15, 25, 10, 13, 15, 38, 61, 14, 16, 50, 92, 14, 27, 553, 367, 97]
# (2) 리스트 컴프리헨션(List Comprehension) (반복문 , 조건문 모두 사용 가능)
new_data = [ item+5 for item in data ]
new_data
[15, 25, 10, 13, 15, 38, 61, 14, 16, 50, 92, 14, 27, 553, 367, 97]
# (3) 넘파이를 사용하면 반복문 사용없이 결과값을 출력시킬수도 있다.
np.array(data) + 5
2차원 배열 연산
X
array([[ 2, 4, 6, 8],
[10, 12, 14, 16],
[18, 20, 22, 24],
[26, 28, 30, 32]])
X + 5
array([[ 7, 9, 11, 13],
[15, 17, 19, 21],
[23, 25, 27, 29],
[31, 33, 35, 37]])
X - 10
array([[-8, -6, -4, -2],
[ 0, 2, 4, 6],
[ 8, 10, 12, 14],
[16, 18, 20, 22]])
< 각 요소마다 연산이 수행됨, 브로드캐스팅 >
# 학생들 점수가 있습니다. [56, 75, 88, 92, 66]
# 이 학생들의 점수가 잘못 되어서, -5점씩 한 점수로 바꿔야 합니다.
score_list = [56, 75, 88, 92, 66]
np.array(score_list) - 5
array([51, 70, 83, 87, 61])
Numpy 기본 정리 끝 다음장부터는 Pandas 개념 정리
'PYTHON LIBRARY > NumPy Library' 카테고리의 다른 글
Python NumPy 슬라이싱과 인덱싱 : 효율적인 데이터 접근 방법 ndarray[], copy() 활용 (1) | 2024.04.08 |
---|---|
Python Numpy로 데이터 분석하기: 최대값, 최소값, 평균 등 기초 통계 및 축(axis)별 연산 (0) | 2024.04.05 |
Python NumPy의 기본 함수와 메서드 : 배열 생성부터 형태 변환까지 (0) | 2024.04.04 |
Python에서 데이터 저장 및 불러오기 : NumPy의 save와 load 함수 사용법 (0) | 2024.04.04 |
Python과 NumPy 기초 : 다차원 배열과 선형대수학 라이브러리 시작하기 (1) | 2024.04.03 |