Coding Diary.

(파이썬) NumPy, ndarray의 요소에 액세스하고 요소 삭제/삽입하기 본문

Coding/Python

(파이썬) NumPy, ndarray의 요소에 액세스하고 요소 삭제/삽입하기

life-of-nomad 2024. 6. 12. 12:42
728x90
반응형
지난 글에서 NumPy 에서 유용한 내장 함수를 이용해 다양한 ndarray를 만드는 방법에 대해 알아보았습니다. ndarray는 변경가능(mutable) 합니다. 즉, ndarray를 만든 후에 안에 있는 요소들을 변경할 수 있습니다. 또한, 슬라이싱(slicing)도 할 수 있습니다. 머신러닝에서 데이터를 훈련 세트와 교차검증 세트, 테스트 세트로 분할하는 등 슬라이싱을 사용하여 데이터를 분할하는데 유용합니다.
이번 글에서는 인덱싱을 이용하여 ndarray의 요소들에 액세스하거나 요소들을 변경하는 방법에 대해 알아보겠습니다.

 

🔻(참고)NumPy 함수🔻

 

(파이썬) NumPy 넘파이 내장 함수 총정리

NumPy 내장 함수를 이용하면 ndarray를 만드는 시간이 절약됩니다. 내장 함수를 이용하면 단 한줄의 코드로 특정한 종류의 ndarray를 만들 수 있습니다. 이번 글에서는 가장 유용한 ndarray 생성용 내장

life-of-nomad.tistory.com

 

1. 1차원 배열

1) 개별 요소에 액세스하기

  • 대괄호 [] 안에 인덱스를 사용하여 요소에 액세스할 수 있습니다. 
  • NumPy에서는 양수 및 음수 인덱스를 모두 사용하여 ndarray 요소에 액세스할 수 있습니다. 
  • 양수 인덱스는 배열의 시작 부분에서, 음수 인덱스는 배열의 끝부분에서 요소에 액세스하기 위해 사용됩니다.
x = np.array([1, 2, 3, 4, 5])

print('x = ', x)
print('This is First Element in x:', x[0])
print('This is Second Element in x:', x[1])
print('This is Fifth (Last) Element in x:', x[4])
print('This is First Element in x:', x[-5])
print('This is Second Element in x:', x[-4])
print('This is Fifth (Last) Element in x:', x[-1])

>>> x = [1 2 3 4 5]
    This is First Element in x: 1 
    This is Second Element in x: 2 
    This is Fifth (Last) Element in x: 5
    This is First Element in x: 1 
    This is Second Element in x: 2 
    This is Fifth (Last) Element in x: 5
  • 여기서 주의해야 할 점은 첫 번째 요소에 액세스하려면 인덱스 1이 아니라 인덱스 0을 사용해야 한다는 것입니다.

2) 요소 변경하기

x = np.array([1, 2, 3, 4, 5])
print('Original: x = ', x)

x[3] = 20
print('Modified: x = ', x)

>>> Original: x = [1 2 3 4 5]
	Modified: x = [ 1 2 3 20 5]

 

2. 2차원 배열

1) 개별 요소에 액세스하기

  • 위와 비슷하게 2차원 ndarray의 특정한 요소에 액세스하고 변경할 수도 있습니다. 
  • 2차원 요소에 액세스하려면 [행, 열] 양식으로 2개의 인덱스를 제공해야 합니다.
X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

print('X = \n', X)
print('This is (0,0) Element in X:', X[0,0])
print('This is (0,1) Element in X:', X[0,1])
print('This is (2,2) Element in X:', X[2,2])

>>> X = 
    [[1 2 3]  
     [4 5 6]  
     [7 8 9]]
     
     This is (0,0) Element in X: 1 
     This is (0,1) Element in X: 2 
     This is (2,2) Element in X: 9
  • 인덱스 [0, 0]은 첫번째 행, 첫번째 열에 있는 요소를 나타냅니다.

2) 요소 변경하기

X = np.array([[1,2,3],[4,5,6],[7,8,9]])
print('Original:\n X = \n', X)

X[0,0] = 20
print('Modified:\n X = \n', X)

>>> Original: 
    X = 
    [[1 2 3]  
    [4 5 6]  
    [7 8 9]]
    Modified: 
    X = 
    [[20 2 3]  
    [ 4 5 6]  
    [ 7 8 9]]

 

 

3. 요소 삭제하기 np.delete

  • np.delete(ndarray, elements, axis) 함수를 사용하여 요소를 삭제할 수 있습니다.
  • 지정된 axis(축)을 따라, 주어진 ndarray에서, 주어진 elements(요소) 리스트를 delete(삭제) 합니다.
  • 1차원 ndarray 인 경우 키워드 axis 가 필요하지 않습니다.
  • 2차원 ndarray 인 경우 axis = 0을 사용하여 행을 선택하고, axis = 1을 사용하여 열을 선택합니다.
x = np.array([1, 2, 3, 4, 5])
Y = np.array([[1,2,3],[4,5,6],[7,8,9]])

print('Original x = ', x)

# We delete the first and last element of x
x = np.delete(x, [0,4])
print('Modified x = ', x)

print('Original Y = \n', Y)

# We delete the first row of y
w = np.delete(Y, 0, axis=0)

# We delete the first and last column of y
v = np.delete(Y, [0, 2], axis =1)

print('w = \n', w)
print('v = \n', v)
>>> Original 
    x = [1 2 3 4 5]
    Modified x = [2 3 4]
    
    Original 
    Y = [[1 2 3]  
    	[4 5 6]  
    	[7 8 9]]
    w = [[4 5 6]  
    	[7 8 9]]
    v = [[2] 
    	[5]  
        [8]]

 

4. 요소 추가하기 np.append

  • np.append(ndarray, elements, axis) 함수를 이용하여 ndarray 에 값을 추가할 수 있습니다.
  • 이 함수는 지정된 axis(축)을 따라, 주어진 elements(요소) 리스트를 ndarray에 추가합니다.
x = np.array([1, 2, 3, 4, 5])
print('Original x = ', x)

# We append the integer 6 to x
x = np.append(x, 6)
print('x = ', x)

# We append the integer 7 and 8 to x
x = np.append(x, [7, 8])
print('x = ', x)

>>> Original x = [1 2 3 4 5]
    x = [1 2 3 4 5 6]
    x = [1 2 3 4 5 6 7 8]
Y = np.array([[1,2,3],[4,5,6]])
print('Original Y = \n', Y)

# We append a new row containing 7,8,9 to y
v = np.append(Y, [[7, 8, 9]], axis = 0)

# We append a new column containing 9 and 10 to y
w = np.append(Y, [[9], [10]], axis=1)

print('v = \n', v)
print('q = \n', q)

>>> Original Y = 
 	     [[1 2 3]  
            [4 5 6]]
            
        v = [[1 2 3]  
            [4 5 6]  
            [7 8 9]]
            
        q = [[ 1 2 3 9]  
            [ 4 5 6 10]]

 

5. 요소 삽입하기 np.insert

  • np.insert(ndarray, indexm elements, axis) 함수를 사용하여 ndarray 값을 삽입할 수 있습니다.
  • 이 함수는 지정된 axis(축)을 따라 주어진 index(인덱스)의 바로 앞에서 주어진 elements(요소) 리스트를 ndarray에 삽입합니다.
x = np.array([1, 2, 5, 6, 7])
print('Original x = ', x)

# We insert the integer 3 and 4 between 2 and 5 in x.
x = np.insert(x, 2, [3, 4])
print('x = ', x)

>>> Original x = [1 2 5 6 7]
	x = [1 2 3 4 5 6 7]
Y = np.array([[1,2,3],[7,8,9]])
print('Original Y = \n', Y)

# We insert a row between the first and last row of y
w = np.insert(Y, 1, [4, 5, 6], axis=0)

# We insert a column full of 5s between the first and second column of y
v = np.insert(Y, 1, 5, axis=1)

print('w = \n', w)
print('v = \n', v)

>>> Original Y = 
           [[1 2 3]  
            [7 8 9]]
            
        w = [[1 2 3]  
            [4 5 6]  
            [7 8 9]]
            
        v = [[1 5 2 3]  
            [7 5 8 9]]

 

6. 배열 쌓기

1) np.hstack (가로로 쌓기)

  • np.hstack(sequunce_of_ndarray) : 배열을 수평 방향으로(열 방향으로) 차례로 쌓아서 만든 스택 배열 리턴

2) np.vstack (세로로 쌓기)

  • np.vstack(sequence_of_ndarray) : 배열을 수직 방향으로(행 방향으로) 차례로 쌓아서 만든 최소 2차원 스택 배열 리턴
x = np.array([1,2])
Y = np.array([[3,4],[5,6]])

print('x = ', x)
print('Y = \n', Y)

# We stack x on top of Y
z = np.vstack((x, Y))

# We stack x on the right of Y.
# We need to reshape x in order to stack it on the right of Y.
w = np.hstack((Y, x.reshape(2, 1)))

print('z = \n', z)
print('w = \n', w)

>>> x = [1 2]
    Y = [[3 4]  
    	[5 6]]

    z = [[1 2]  
    	[3 4]  
        [5 6]]

    w = [[3 4 1]  
    	[5 6 2]]

 

728x90
반응형