Python NumPy의 numpy.char.index() 메서드를 사용하면 문자열 안에서 지정한 부분 문자열(sub)이 처음 등장하는 위치, 즉 가장 낮은 인덱스를 손쉽게 구할 수 있습니다. 이 메서드는 정수(int) 값들로 이루어진 출력 배열을 반환하며, 부분 문자열을 찾지 못하면 ValueError를 발생시킵니다. 참고로 비슷한 역할을 하는 numpy.char.find()와 달리, index()는 부분 문자열이 없을 때 -1을 반환하는 대신 예외를 일으킨다는 점에 유의해야 합니다.
메서드의 첫 번째 매개변수는 입력 배열이며, 두 번째 매개변수는 검색하고자 하는 부분 문자열입니다.
구현 단계
먼저 필요한 라이브러리를 임포트합니다.
import numpy as np
문자열로 이루어진 1차원 배열을 생성합니다.
arr = np.array(['KATIE', 'KATE'])
배열을 화면에 출력해 내용을 확인합니다.
print("Array...\n",arr)
배열의 데이터 타입(dtype)을 확인합니다.
print("\nArray datatype...\n",arr.dtype)
배열의 차원(ndim)을 확인합니다.
print("\nArray Dimensions...\n",arr.ndim)
배열의 형상(shape)을 확인합니다.
print("\nOur Array Shape...\n",arr.shape)
배열에 들어 있는 요소의 개수(size)를 확인합니다.
print("\nNumber of elements in the Array...\n",arr.size)
numpy.char.index() 메서드를 호출하여 각 문자열에서 부분 문자열 'AT'가 발견되는 가장 낮은 인덱스를 구합니다.
print("\nResult (index() method)...\n",np.char.index(arr, 'AT'))
전체 예제 코드
import numpy as np
# 문자열로 이루어진 1차원 배열 생성
arr = np.array(['KATIE', 'KATE'])
# 배열 출력
print("Array...\n",arr)
# 데이터 타입 확인
print("\nArray datatype...\n",arr.dtype)
# 배열 차원 확인
print("\nArray Dimensions...\n",arr.ndim)
# 배열 형상 확인
print("\nOur Array Shape...\n",arr.shape)
# 배열 요소 개수 확인
print("\nNumber of elements in the Array...\n",arr.size)
# numpy.char.index() 메서드로 부분 문자열 'AT'가 발견되는 가장 낮은 인덱스 구하기
print("\nResult (index() method)...\n",np.char.index(arr, 'AT'))
실행 결과
Array... ['KATIE' 'KATE'] Array datatype... <U5 Array Dimensions... 1 Our Array Shape... (2,) Number of elements in the Array... 2 Result (index() method)... [1 1]
실행 결과를 보면 'KATIE'와 'KATE' 두 문자열 모두 인덱스 1의 위치에서 'AT'가 시작되므로 결과 배열로 [1 1]이 반환됩니다. 만약 검색하려는 부분 문자열이 문자열 안에 존재하지 않으면, 이 메서드는 -1을 반환하는 대신 ValueError를 발생시키기 때문에 실제 코드에서는 try-except 문으로 예외 처리를 해주는 것이 안전합니다.