본문 바로가기

Study/AI

넘파이(Numpy) - 배열 연산

728x90

1. 연산 함수

연산 함수: 배열 내부 연산을 지원하는 함수

축: 배열의 랭크가 증가할 떄 마다 새로운 축이 추가되어 차원 증가

 

- sum 함수: 각 요소의 합을 반환

In import numpy as np
test_array = np.arange(1, 11)
test_array.sum()
Out 55

- sum함수를 랭크가 2이상인 배열에 적용할 떄 축으로 연산의 방향을 설정

In test_array = np.arange(1,13).reshape(3,4)
test_array
Out array([[ 1, 2, 3, 4],
           [ 5, 6, 7, 8],
           [ 9, 10, 11, 12]])
In test_array.sum(axis=0)
Out array([15, 18, 21, 24])
In test_array.sum(axis=1)
Out array([10, 26, 42])
In test_array.mean(axis=1) # axis=1 축을 기준으로 평균 연산
Out array([ 2.5, 6.5, 10.5])
In test_array.std() # 전체 값에 대한 표준편차 연산
Out 3.452052529534663
In test_array.std(axis=0) # axis=0 축을 기준으로 표준편차 연산
Out array([3.26598632, 3.26598632, 3.26598632,3.26598632])
In np.sqrt(test_array) # 각 요소에 제곱근 연산 수행
Out array([[1. , 1.41421356, 1.73205081, 2. ], [2.23606798, 2.44948974, 2.64575131, 2.82842712], [3. , 3.16227766, 3.31662479, 3.46410162]])

2. 연결 함수

- 연결함수: 두 객체 간의 결합을 지원하는 함수

- vstack  함수: 배열을 수직으로 붙여 하나의 행렬을 생성

- hstack 함수: 배열을 수평으로 붙여 하나의 행렬을 생성

넘파이는 열 벡터를 표현할 수 없어 2차원 행렬 형태로 표현

In v1 = np.array([1, 2, 3])
v2 = np.array([4, 5, 6])
np.vstack((v1, v2))
Out array([[1, 2, 3],
           [4, 5, 6]])
In np.hstack((v1,v2))
Out array([1, 2, 3, 4, 5, 6])

- concateneat 함수: 축을 고려하여 두 개의 배열을 결합

스택 계열의 함수와 달리 생성될 배열과 소스가 되는 배열의 차원이 같아야 함

두 벡터를 결합하고 싶다면, 해당 벡터를 일단 2차원 배열 꼴로 변환 후 행렬로 나타내야 함

In v1 = np.array([[1, 2, 3]])
v2 = np.array([[4, 5, 6]])
np.concatenate((v1,v2), axis=0)
Out array([[1, 2, 3],
           [4, 5, 6]])
In v1 = np.array([1, 2, 3, 4]).reshape(2,2)
v2 = np.array([[5,6]]).T
v1
Out array([[1, 2],
          [3, 4]])
In v2
Out array([[5],
           [6]])
In np.concatenate((v1,v2), axis=1)
Out array([[1, 2, 5],
           [3, 4, 6]])

3. 사칙연산 함수

In x = np.arange(1, 7).reshape(2,3)
x
Out array([[1, 2, 5],
           [3, 4, 6]])
In x + x
Out array([[ 2, 4, 6],
           [ 8, 10, 12]])
In x - x
Out : array([[0, 0, 0],
           [0, 0, 0]])
In x / x
Out array([[1., 1., 1.],
           [1., 1., 1.]])
In x ** x
Out array([[ 1, 4, 27],
           [ 256, 3125, 46656]], dtype=int32

- dot함수: 벡터의 내적 연산

In x_1 = np.arange(1, 7).reshape(2,3)
x_2 = np.arange(1, 7).reshape(3,2)
x_1
Out array([[1, 2, 5],
           [3, 4, 6]])
In x_2
Out array([[1, 2],
           [3, 4],
           [5, 6]])
In x_1.dot(x_2)
Out array([[22, 28],
           [49, 64]])

- 브로드캐스팅 연산: 하나의 행렬과 스칼라 값들 간의 연산이나 행렬과 벡터간의 연산

In x = np.arange(1, 10).reshape(3,3)
x
Out array([[1, 2, 3],
           [4, 5, 6],
          [7, 8, 9]])
In x + 10
Out array([[11, 12, 13],
           [14, 15, 16],
           [17, 18, 19]])
In x - 2
Out array([[-1, 0, 1],
           [ 2, 3, 4],
           [ 5, 6, 7]])
728x90

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

Titanic Survival Prediction  (1) 2024.04.10
넘파이(Numpy) - 비교 연산과 데이터 추출  (0) 2023.04.09
넘파이(Numpy) - 배열 객체 다루기  (2) 2023.04.09
데이터의 이해  (0) 2023.04.02
머신러닝의 기초  (0) 2023.04.02