numpy array
2023. 9. 5. 08:38ㆍProgramming/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 |