5-2 . Numpy 제공 자료구조/Array

[파이썬 numpy] 1차원 배열의 인덱싱/수정

만다린망고 2020. 10. 16. 12:10
반응형

[파이썬 numpy] 1차원 배열의 인덱싱/수정


1차원 배열의 인덱싱과 수정방법을 알아봅시다. 배열의 인덱싱은 배열의 특정 원소(들)에 접근하는 것입니다. 특정원소에 접근하면 그 값을 다른 값으로 바꿀 수 있기 때문에 배열의 수정도 함께 배울 것입니다.


먼저 배열을 하나 정의합시다. 


>>> A=np.array([1,2,3,4,5,6,7])

>>> A

array([1, 2, 3, 4, 5, 6, 7])




하나의 원소에 접근


배열 A의 첫번째 원소에 접근해보겠습니다. 대괄호를 사용합니다. 


>>> A[0]

1




구간을 이용하여 여러 원소에 접근


구간을 이용할 때는 콜론 : 을 사용합니다. 첫번째와 두번째 원소에 접근할 때는 어떻게 해야할까요? 아마 A[0:1]가 떠오르실 것입니다. 아쉽게도 결과는 아래와 같습니다. 첫번째 원소만 출력되었습니다. 


>>> A[0:1]

array([1])


파이썬 인덱싱에서 번호는 원소에 배정되지 않습니다. 예를들어 1,2,3 이라는 원소가 있다면 번호의 위치는 아래와 같습니다. 괄호가 번호입니다. 


(0) 1 (1) 2 (2)


첫번째와 두번째 원소에 접근하려면 번호로는 0:2 를 입력해주어야 합니다. 


>>> A[0:2]

array([1, 2])




처음부터 또는 마지막까지 접근


처음부터 특정 원소까지, 혹은 특정 원소부터 끝까지 접근하는 방법입니다. 


첫번째 원소부터 3번째 원소까지 접근해봅시다. A[0:3] 으로 해도 되지만, 0 자리를 비워줘도 됩니다. 


>>> A[:3]

array([1, 2, 3])


이번에는 3번째 원소부터 마지막 원소까지 접근해봅시다. 3이 아니라 2를 입력해야 합니다. 위에서 설명했듯이 인덱싱 번호와 원소 번호는 다르다는 것을 기억합시다.  


>>> A[2:]

array([3, 4, 5, 6, 7])




불연속하게 접근


1번째 원소와 3번째 원소와 같이 인접하지 않은 여러 원소에 접근하고 싶다면 아래와 같이 입력하면 됩니다. 


>>> A[[0,2]]

array([1, 3])




조건부 인덱싱


2보다 큰 원소에만 접근해봅시다.


>>> A[A>2]

array([3, 4, 5, 6, 7])




원소 수정


원소수정은 인덱싱 후에 원하는 값을 입력해주면 됩니다. 예를들어 세번째 원소를 10으로 바꾸고 싶다면 아래와 같이 입력하면 됩니다. 


>>> A[2]=10

>>> A

array([ 1,  2, 10,  4,  5,  6,  7])


여러원소를 동시에 바꿀 수도 있습니다. 


>>> A[0:2]=[100,1000]

>>> A

array([ 100, 1000,   10,    4,    5,    6,    7])


반응형