NumPy 배열 요소 접근 및 반복

Beginner

소개

이 랩에서는 numpy.nditer 객체를 사용하여 NumPy 배열을 반복하고 개별 요소에 접근하는 방법을 배웁니다. 또한 nditer 객체의 op_flags 매개변수를 사용하여 배열의 요소를 수정하는 방법도 배웁니다. 마지막으로, nditer 객체를 사용하여 NumPy 배열에서 브로드캐스팅 (broadcasting) 에 대해 배웁니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단을 클릭하여 Notebook 탭으로 전환하여 실습을 위해 Jupyter Notebook에 접근하십시오.

때로는 Jupyter Notebook 이 로딩을 완료하는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사는 자동화될 수 없습니다.

학습 중에 문제가 발생하면 언제든지 Labby 에게 문의하십시오. 세션 후 피드백을 제공해주시면 문제를 신속하게 해결해 드리겠습니다.

ndarray 생성 및 numpy.nditer 를 사용하여 반복

이 단계에서는 arange() 메서드를 사용하여 1 차원 NumPy 배열을 생성한 다음, numpy.nditer 객체를 사용하여 반복합니다.

import numpy as np

a = np.arange(0,40,5)

print ("The Original array is:")
print (a)
print ('\n')

## showing elements of array one by one
print ("The Modified array is:")
for x in np.nditer(a):
    print(x)

배열의 전치 (transpose) 반복

이 단계에서는 2 차원 NumPy 배열을 가져와 전치를 구하고, nditer 객체를 사용하여 반복합니다.

import numpy as np

a = np.array([[11,2,3,4],[29,4,15,6],[11,21,39,31]])
print("The array is :")
print(a)

print("The transpose of the array is :")
at = a.T
print(at)

print("Iterating over the array:")
for x in np.nditer(at):
    print(x, end=' ')

C 스타일 및 F 스타일 순서로 배열 반복

이 단계에서는 2 차원 NumPy 배열을 생성하고, 전치를 구한 다음, nditer 객체를 사용하여 C-style 및 F-style 순서로 반복합니다.

import numpy as np

a = np.array([[1,2,3,4],[8,9,5,6],[10,20,29,31]])
print("\nPrinting the array:\n")
print(a)

print("\nPrinting the transpose of the array:\n")
at = a.T
print(at)

print("\nIterating over the transposed array in F-style order:\n")
for x in np.nditer(at, order='F'):
    print(x, end=' ')

print("\nIterating over the transposed array in C-style order:\n")
for x in np.nditer(at, order='C'):
    print(x, end=' ')

브로드캐스팅을 사용하여 여러 배열 반복

이 단계에서는 서로 다른 차원의 두 NumPy 배열을 생성하고, nditer 객체를 사용하여 브로드캐스팅으로 반복합니다.

import numpy as np

a = np.arange(0,60,5)
a = a.reshape(3,4)

print ('The First array :')
print (a)
print ('\n')

print ('The Second array is')
b = np.array([1, 2, 3, 4], dtype = int)
print (b)
print ('\n' )

print ('The Modified array is')
for x,y in np.nditer([a,b]):
    print ("%d:%d" %(x,y))

op_flags 를 사용하여 배열 값 수정

이 단계에서는 1 차원 NumPy 배열을 생성하고, op_flags 매개변수를 'readwrite'로 설정하여 nditer 객체를 사용하여 반복한 다음, 반복하면서 배열의 요소를 수정합니다.

import numpy as np

a = np.arange(0,50,6)
a = a.reshape(3,3)

print ('The Original array is:')
print (a)
print ('\n')

for x in np.nditer(a, op_flags=['readwrite']):
    x[...] = 2 + x

print ('The Modified array is:')
print (a)

요약

이 랩에서는 NumPy 에서 nditer 객체를 사용하여 배열을 반복하는 방법과 op_flags 매개변수를 사용하여 반복 중에 배열의 요소를 수정하는 방법을 배웠습니다. 또한, 여러 배열을 동시에 반복하기 위해 nditer 객체를 사용하는 NumPy 배열의 브로드캐스팅 (broadcasting) 에 대해서도 배웠습니다.