문자열에서 부분 문자열(sub)이 처음으로 발견되는 가장 낮은 인덱스를 반환하려면 Python NumPy의 numpy.char.find() 메서드를 사용합니다. 이 메서드는 정수(int) 타입의 출력 배열을 반환하며, 부분 문자열을 찾지 못한 경우 -1을 반환합니다.
각 매개변수의 역할은 다음과 같습니다.
- 첫 번째 매개변수: 입력 배열
- 두 번째 매개변수: 검색할 부분 문자열
- 세 번째·네 번째 매개변수(선택 사항): start와 end 값으로, 슬라이스 표기법(slice notation)과 동일하게 해석됩니다.
단계별 구현 방법
먼저 필요한 라이브러리를 임포트합니다.
import numpy as np
문자열로 이루어진 1차원 배열을 생성합니다.
arr = np.array(['KATIE', 'JOHN', 'CRATE', 'AmY', 'BRADley'])
생성한 배열을 화면에 출력해 확인합니다.
print("Array...\n", arr)배열의 데이터 타입을 확인합니다.
print("\nArray datatype...\n", arr.dtype)배열의 차원을 확인합니다.
print("\nArray Dimensions...\n", arr.ndim)배열의 형태(shape)를 확인합니다.
print("\nOur Array Shape...\n", arr.shape)배열에 포함된 요소의 개수를 확인합니다.
print("\nNumber of elements in the Array...\n", arr.size)이제 numpy.char.find() 메서드를 사용해 각 요소에서 부분 문자열 'AT'가 발견되는 가장 낮은 인덱스를 구합니다. start=1, end=3으로 지정했으므로 인덱스 1부터 3 직전까지만 검색 대상이 됩니다.
print("\nResult (find)...\n", np.char.find(arr, 'AT', start=1, end=3))전체 예제 코드
import numpy as np
# 문자열로 이루어진 1차원 배열 생성
arr = np.array(['KATIE', 'JOHN', 'CRATE', 'AmY', 'BRADley'])
# 배열 출력
print("Array...\n", arr)
# 데이터 타입 확인
print("\nArray datatype...\n", arr.dtype)
# 차원 확인
print("\nArray Dimensions...\n", arr.ndim)
# 형태(shape) 확인
print("\nOur Array Shape...\n", arr.shape)
# 요소 개수 확인
print("\nNumber of elements in the Array...\n", arr.size)
# numpy.char.find() 메서드로 부분 문자열 'AT'가 발견되는 가장 낮은 인덱스 반환
# 부분 문자열을 찾지 못하면 -1을 반환합니다.
print("\nResult (find)...\n", np.char.find(arr, 'AT', start=1, end=3))실행 결과
Array... ['KATIE' 'JOHN' 'CRATE' 'AmY' 'BRADley'] Array datatype... <U7 Array Dimensions... 1 Our Array Shape... (5,) Number of elements in the Array... 5 Result (find)... [ 1 -1 -1 -1 -1]
결과 해석
'KATIE'에서는 인덱스 1 위치에 'AT'가 존재하므로 1이 반환되었습니다. 반면 'JOHN', 'CRATE', 'AmY', 'BRADley'에서는 지정된 범위(start=1, end=3) 내에 'AT'가 없으므로 모두 -1이 반환되었습니다. 특히 'CRATE'에는 전체 문자열 기준으로 'AT'가 포함되어 있지만, 검색 범위가 인덱스 1~2로 제한되어 있어 찾지 못한 점에 유의하세요.