Python

[Python] Numpy (2)

orin602 2025. 2. 14. 16:42

배열값 삭제

  • delete() : NumPy 배열에서 특정 인덱스의 요소를 삭제하는 데 사용한다.
    • delete(array, obj, axis = None)
      • array : 삭제 대상이 되는 배열
      • obj : 삭제할 인덱스
      • axis : None = 기본값(배열을 1차원으로 펼친 후 지정된 인덱스 삭제, 
                 0 = 행(row) 기준 삭제, 1 = 열(column) 기준 삭

주의사항

  • 원본 배열은 변경되지 않는다.
    • np.delete()는 새로운 배열을 반환하기 때문에 원본 배열을 수정하려면 반환값을 다시 저장해야 한다.
    • np.delete()는 배열의 복사본을 생성하기 때문에 큰 배열에서 잦은 삭제 작업은 성능에 영향을 줄 수 있다.
      >> 리스트(list) 사용 등으로 잦은 삭제 작업을 대체??

배열 복사

리스트(list) 자료형과 달리 배열의 슬라이스 복사본이 아니다.

 

  • 얕은 복사(Shallow Copy)
    • 얕은 복사는 참조만 복사하기 때문에 우너본 배열과 복사된 배열이 같은 메모리 주소를 공유한다.
    • 복사된 배열에서 값을 변경하면 원본 배열도 변경된다.

 

  • 깊은 복사(Deep Cpoy)
    • 깊은 복사는 새로운 배열을 생성하여 원본 배열의 데이터를 복사한다.
    • 복사된 배열에서 값을 변경해도 원본 배열은 영향을 받지 않는다.

 

얕은 복사 vs 깊은 복사

특징 얕은 복사 깊은 복사
동작 방식 참조 복사 (원본과 같은 메모리 공유) 새로운 배열 생성 (데이터 독립)
원본 배열 변경 여부 O X
사용 방법 = (대입 연산자) copy()

배열 변환

  • 2차원 배열의 전치
    • 행렬의 행과 열을 바꿈.
    • 전치 행렬은 Matrix 곱 연산에서 두 개의 행렬의 크기를 맞출 때 사용.

 

 

  • 3차원 배열의 전치

 

  • 축 변경

  • swapaxes(0, 1) : 다차원 배열에서 두 개의 축을 변경할 때 사용
    • 축 0과 축 1을 교체

배열 재구조화

  • reshpae() : 배열의 형상(형태)을 변경하는 함수
    • 배열의 원소 개수는 그대로 유지하면서 새로운 차원으로 재구조화 함.

  • newaxis() : 
    • 배열에 새로운 축을 추가
    • 배열의 차원을 늘려줌


배열 크기 변경

  • 배열 모양 변경

  • np.random.randint(0, 10, (2, 5)) : 0~9 사이의 랜덤 숫자로 2x5 배열 생성.
  • n2.resize((5,2)) : 크기를 5x2로 변경


배열에 값 추가

  • append() : 배열의 끝에 값 추가
    • aixs 지정이 없으면 1차원 배열 형태로 변형되어 결합됨.

 

axis를 0으로 지정했을 때

 

axis를 1로 지정했을 때

  동작 차원 변경
axis = 0 행 방향 추가 (세로) 행 개수 증가
axis = 1 열 방향 추가 (가로) 열 개수 증가
  • 주의할 점 : shape이 맞아야 함.
    • axis = 0 : 열 개수가 같아야 함
    • axis = 1 : 행 개수가 같아야 함

배열 연결

  • concatenate() : 두 개 이상의 배열을 특정 축(axis) 방향으로 연결하는 함수
    • append() 보다 더 효율적이고, 여러 배열을 한 번에 합칠 수 있음

1차원 배열
2차원 배열


배열 분할

 

split() : 배열 분할

- 지정된 위치에서 분할

 

 

vsplit() : 수직 분할

-행 단위로 쪼개서 리스트의 형태로 반환

- 2차우너 이상의 배열에서만 동작

 

 

hsplit() : 수평 분할

- 열 단위로 쪼개서 리스트의 형태로 반환 (split()에서 axis = 1로 지정한 것과 동일)


산술 연산

연산자 함수 설명
+ np.add 덧셈
- np.subtract 뺏셈
- np.negative 단항 음수
* np.multiply 곱셈
/ np.divide 나눗셈
// np.floor_divide 나눗셈 내림
** np.power 지수 연산
% np.mod 나머지 연산

 

기타 함수

  • 절대값 함수
    • absolute(), abs()
  • 제곱, 제곱근 함수
    • square(), sqrt()
  • 지수와 로그함수
    • exp() : 자연상수(e)의 지수배 계산
      • >> np.exp(2) = e^2
    • exp2() : 입력 배열에 대해 2의 n제곱 계산
    • power() : np.power(m, n) 형태로 작성해 m**n 연산 결과와 동일
    • log() : 밑이 자연상수(e)인 로그
    • log2 : 밑이 2인 로그

집계 함수

함수 NaN 안전모드 설명
np.sum() np.nansum() 요소의 합 계산
np.cumsum() np.nansumsum() 요소의 누적 합
np.diff() - 요소의 차분
np.prod() np.nanprod() 요소의 곱 계산
np.dot() - 행렬 곱 수행
np.min() np.nanmin() 최소값
np.max() np.nanmax() 최대값
np.median() np.nanmedian() 중앙값
np.argmin() np.nanargmin() 최소값 인덱스
np.argmax() np.nanargmax() 최대값 인덱스

비교 연산

연산자 비교 범용 함수
== np.equal()
!= np.not_equal()
< np.less()
<= np.less_equal()
> np.greater()
>= np.greater_equal()

배열 정렬

'Python' 카테고리의 다른 글

[Python] 리스트와 튜플 (2)  (0) 2025.02.21
[Python] 리스트와 튜플 (1)  (0) 2025.02.15
[Python] 비교, 논리 연산자  (0) 2025.02.15
[Python] Pandas  (0) 2025.02.15
[Python] Numpy(1)  (0) 2025.01.25