[파이썬 numpy] 1차원 배열의 인덱싱/수정
[파이썬 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])