numpy array

2023. 9. 5. 08:38Programming/Python

    목차
반응형

numpy에서의 배열 선언 방법

우선 numpy를 import

import numpy as np

4x2 행렬 선언 방법들

np.ones((4, 2))  # shape 객체를(튜플로) 입력으로 받기 때문에 괄호 필요
array([[1., 1.],
      [1., 1.],
      [1., 1.]
      [1., 1.]])

이외에 np.zeros((4, 2))는 모든 값이 0으로 채워진 배열을 생성합니다.

파이썬 리스트를 넘파이 배열로 변환

원래 있던 파이썬 배열을 numpy 배열로 변환할 수도 있습니다.

arr = np.array([[1, 2], [3, 4], [5, 6]])
print(arr)
array([[1, 2], 
      [3, 4]
      [5, 6]])

배열 선언 시 원소의 type을 지정

arr = np.array([[1, 2], [3, 4], [5, 6]], dtype=np.string_)
arr
array([[b'1', b'2'],
       [b'3', b'4'],
       [b'5', b'6']], dtype='|S1')

배열 다루기

배열 정보

arr.shape
(3, 2)
arr.dtype
dtype('int64')

원소의 type casting

arr
array([[1, 2],
       [3, 4],
       [5, 6]])
arr = arr.astype(np.float64)
arr
array([[1., 2.],
       [3., 4.],
       [5., 6.]])

배열 원소의 스칼라 연산

numpy는 차원의 증가에 따라 벡터, 행렬, 텐서로 달라지나, 기본적으로 n차원 벡터이기에 스칼라 연산을 지원합니다.

arr = np.array([[1, 2], [3, 4], [5, 6]])
arr * 2
arr
array([[ 2,  4],
       [ 6,  8],
       [10, 12]])

당연히 /와 +, **등도 지원합니다.

nparray의 slice 연산

다음과 같이 3x2의 2차원 벡터를 numpy 배열로 선언합니다.

arr = np.array([[1, 2],
       [3, 4],
       [5, 6]])
arr
array([[1, 2],
       [3, 4],
       [5, 6]])

모든 요소를 slice 해서 얻고자 할 때 다음과 같은 방법을 사용할 수 있습니다.
기본적으로 파이썬 슬라이스 연산 문법을 그대로 적용할 수 있습니다만, 다차원이 수 있기에 차원간의 구분은 콤마(,)로 합니다.

>>> arr[:,:]
array([[1, 2],
       [3, 4],
       [5, 6]])

>>> arr[:]
array([[1, 2],
       [3, 4],
       [5, 6]])

1행내 모든 원소들만 획득

>>> arr[0, :]
array([1, 2])

2행내 모든 원소들만 획득

>>> arr[1, :]   # 혹은 arr[1: ...]
array([3, 4])

모든 행의 두 번째 열의 원소들을 획득

>>> arr[:, 1]
array([2, 4, 6])

2행의 모든 두 번째 열의 원소를 획득

>>> arr[1:2, 1]
array([4])

max, amax, maximum

max

np.max(np.array([1, 3, 4, 5, 6, 7]))
7

axis

axis는 행, 열의 축을 의미합니다.
0인 경우 열을 기준으로, 1인 경우 행을 기준으로 열간 혹은 행간 원소들의 최댓값을 구합니다.

아래의 경우 axis를 0으로 주었으며, 이 때 열을 기준으로 열 내 원소들의 최댓값을 구합니다.
즉, [1, 3, 5]에서의 최댓값과 [2, 4, 6]에서의 최댓값을 구합니다.

arr = np.array([[1, 2], [3, 4], [5, 6]])
np.max(arr, axis=0)
array([5, 6])

maximum

여러 벡터들의 원소들 중 최댓값을 모아 하나의 벡터를 만들어 반환합니다.

arr1 = np.array([1, 5, 3])
arr2 = np.array([2, 3, 4])
np.maximum(arr1, arr2)
array([2, 5, 4])

위 예에서는 1차원 벡터를 예로 들었지만, 2차원, 3차원이 되어도 결과는 동일합니다. 각 차원 내 원소 위치 별로 값을 비교하여 최댓값을 추출합니다.

반응형

'Programming > Python' 카테고리의 다른 글

Python set 사용 주의점  (0) 2024.02.21
numpy.power  (0) 2023.09.05
numpy frombuffer  (0) 2023.09.05
Python glob  (0) 2023.09.05
loguru.logger  (0) 2022.04.25