Python/Numpy

[Python] 파이썬 numpy 배열 요소 바꾸기, numpy 배열과 리스트의 차이점

나비🦋 2024. 5. 19. 22:52
반응형

안녕하세요! 나비입니다 🦋

이번 포스팅에서는 파이썬 numpy로 생성한 배열에서 각각의 요소 값을 바꾸는 방법에 대해 소개할 예정입니다.

또한, numpy의 배열과 파이썬 리스트 자료형의 차이점에 대해서도 함께 설명하겠습니다.


배열 요소 바꾸는 방법


파이썬 numpy로 선언한 배열을 슬라이싱하고, 그 슬라이싱된 배열의 일부분에 특정한 값을 대입해주면 원래 배열도 함께 바뀝니다. 마치 동기화 하는 것과 비슷한 느낌입니다.

import numpy as np

#바꾸기 전
A = np.array([0,1,2,3])
print(A)

#바꾼 후
a = A[0:3]
a = -1
print(A)
[0,1,2,3]
[-1,-1,-1,3]


위 코드와 같이, 3개의 값을 바꾸고자 할 때 굳이 [-1,-1,-1]이라고 하지 않고 -1 한 번만 입력해줘도 모두 -1로 바뀌는 것을 확인할 수 있습니다.

반면,  파이썬 리스트는 이러한 기능을 지원하지 않습니다. 위에 나온 코드를 배열 대신 리스트에 똑같이 적용하면 에러가 뜹니다.

에러를 뜨지 않게 하기 위해서는, 리스트를 언패킹 해줘야 합니다. 언패킹 예제 코드는 아래를 참고해주세요.

A = [0,1,2,3]
print(A)

A[0:3] = -1, -1, -1
print(A)
[0,1,2,3]
[-1,-1,-1,3]


또한, 리스트는 일부를 슬라이싱해 다른 변수에 저장한 후, 새로 만든 그 변수의 요소값들을 변경해도 그 내용이 원래 리스트에 반영되지 않습니다.

즉, 원본과 복사본이 동기화가 되지 않는다는 의미입니다. 이에 대한 예시는 아래 코드를 참고해주세요.

A = [0,1,2,3]
print(A)

a = A[0:2]
a[0] = 1

print(A)
print(a)
[0,1,2,3]
[1,1]
반응형