Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python NumPy char.rfind()로 문자열에서 하위 문자열의 가장 높은 인덱스 반환하기

문자열 내에서 하위 문자열(sub)이 발견되는 가장 높은 인덱스를 반환하려면 Python Numpy의 numpy.char.rfind() 메서드를 사용합니다. 이 메서드는 정수(int) 배열을 결과로 반환하며, 하위 문자열을 찾지 못한 경우 -1을 반환합니다.

첫 번째 매개변수는 입력 배열이고, 두 번째 매개변수는 검색할 하위 문자열입니다. rfind()는 이름 그대로 오른쪽(right)부터 검색하기 때문에 동일한 하위 문자열이 여러 번 등장할 경우 마지막으로 나타나는 위치를 알려줍니다.

단계별 진행 과정

1. 필요한 라이브러리 임포트

import numpy as np

2. 1차원 문자열 배열 생성

arr = np.array(['KATIE', 'JOHN', 'AmY', 'BRATleuATp'])

3. 배열 출력하기

print("Array...\n",arr)

4. 배열의 데이터 타입 확인

print("\nArray datatype...\n",arr.dtype)

5. 배열의 차원 확인

print("\nArray Dimensions...\n",arr.ndim)

6. 배열의 형태(shape) 확인

print("\nOur Array Shape...\n",arr.shape)

7. 배열의 요소 개수 확인

print("\nNumber of elements in the Array...\n",arr.size)

8. rfind() 메서드로 가장 높은 인덱스 찾기

각 요소에서 하위 문자열 'AT'가 발견되는 가장 높은 인덱스를 반환합니다.

print("\nResult (rfind)...\n",np.char.rfind(arr, 'AT'))

전체 예제 코드

import numpy as np

# 1차원 문자열 배열 생성
arr = np.array(['KATIE', 'JOHN', 'AmY', 'BRATleuATp'])

# 배열 출력
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.rfind() 메서드로 하위 문자열이 발견되는 가장 높은 인덱스 반환
print("\nResult (rfind)...\n",np.char.rfind(arr, 'AT'))

실행 결과

Array...
['KATIE' 'JOHN' 'AmY' 'BRATleuATp']

Array datatype...
<U10

Array Dimensions...
1

Our Array Shape...
(4,)

Number of elements in the Array...
4

Result (rfind)...
[ 1 -1 -1 7]

결과 해석

실행 결과를 살펴보면 다음과 같습니다.

  • 'KATIE': 'AT'가 인덱스 1에 위치하므로 1이 반환됩니다.
  • 'JOHN': 'AT'가 존재하지 않으므로 -1이 반환됩니다.
  • 'AmY': 대소문자가 일치하지 않아('AM' 아님) 'AT'를 찾지 못하고 -1이 반환됩니다.
  • 'BRATleuATp': 'AT'가 두 번 등장하지만(인덱스 2와 7), rfind()는 가장 높은 위치인 7을 반환합니다.

이처럼 numpy.char.rfind()는 배열의 모든 문자열 요소에 대해 한 번에 하위 문자열 검색을 수행할 수 있어, 대량의 텍스트 데이터를 벡터화 방식으로 처리할 때 유용합니다.