728x90
반응형

넘파이의 산술 연산

x = np.array([1.0, 2.0, 3.0])
y = np.array([2.0, 4.0, 6.0])

print(x + y)	# 원소별 덧셈
print(x - y)	# 원소별 뺄셈
print(x * y)	# 원소별 곱셈
print(x / y)	# 원소별 나눗셈

---
[3. 6. 9.]
[-1. -2. -3.]
[ 2.  8. 18.]
[0.5 0.5 0.5]

여기서 주의할 점은 배열 x, y의 원소 수가 같음. 원소 수가 다르면 오류가 발생

 

넘파이의 N차원 배열

A = np.array([[1, 2], [3, 4]])
print(A)
print(A.shape)
print(A.dtype)

# 결과
[[1 2]
 [3 4]]
(2, 2)
int64

B = np.array([[3, 0], [0, 6]])
print(A + B)
print(A * B)

# 결과
[[ 4  2]
 [ 3 10]]

 

행렬과 스칼라값의 산술 연산도 가능

이때도 배열과 마찬가지로 브로드캐스트 기능 작동함

print(A)

# 결과
[[1 2]
 [3 4]]

print(A *10)

# 결과
[[10 20]
 [30 40]]

 

 

브로드캐스트

넘파이에서는 형상이 다른 배열끼리도 계산할 수 있음

앞의 예에서 2*2 행렬에 A 스칼라값 10을 곱했을때, 10이라는 스칼라값이 2*2 행렬로 확대된 후 연산이 이루어짐 => 이게 브로드캐스트! 

A = np.array([[1, 2], [3, 4]])
B = np.array([[10], [20]])
print(A * B)

# 결과
[[10 20]
 [60 80]]

 

 

원소 접근

X = np.array([[51, 55], [14, 19], [0, 4]])
print(X)
print(X[0])
print(X[0][1])	# (0, 1) 위치의 원소

# 결과
[[51 55]
 [14 19]
 [ 0  4]]
[51 55]
55

for row in X:
    print(row)
    
# 결과
[51 55]
[14 19]
[0 4]

X = X.flatten()	# X를 1차원 배열로 변환(평탄화)해 한번에 여러 원소 접근 가능
print(X)

# 결과
[51 55 14 19  0  4]

print(X[np.array([0, 2, 4])])	# 인덱스가 0, 2, 4인 원소 얻기

# 결과
[51 14  0]

print(X > 15)	# X의 값 중에 15 보다 큰 값 확인 

# 결과
[ True  True False  True False False]

print(X[X>15])	# X에서 15 보다 큰 값만 구하기

# 결과
[51 55 19]

 

반응형
복사했습니다!