문자열 배열에서 특정 부분 문자열이 겹치지 않고(non-overlapping) 등장하는 횟수를 담은 배열을 반환하려면 Python NumPy의 numpy.char.count() 메서드를 사용하면 됩니다. 이 메서드의 첫 번째 매개변수는 검색 대상이 되는 부분 문자열(sub)입니다.
numpy.char 모듈은 numpy.str_ 타입 배열에 대해 요소별로 자동 적용되는 벡터화 문자열 연산 함수들을 모아 놓은 모듈입니다. 덕분에 반복문 없이도 배열 전체에 문자열 처리를 한 번에 수행할 수 있습니다.
구현 단계
먼저 필요한 라이브러리를 임포트합니다.
import numpy as np
1차원 문자열 배열을 생성합니다.
arr = np.array(['kATIE', 'JOHN', 'KAte', 'AmY', 'BRADley'])
생성한 배열을 화면에 출력합니다.
print("Array...\n", arr)배열의 데이터 타입을 확인합니다.
print("\nArray datatype...\n", arr.dtype)배열의 차원(ndim)을 확인합니다.
print("\nArray Dimensions...\n", arr.ndim)배열의 형태(shape)를 확인합니다.
print("\nOur Array Shape...\n", arr.shape)배열에 포함된 요소의 개수를 확인합니다.
print("\nNumber of elements in the Array...\n", arr.size)부분 문자열의 비중첩 출현 횟수를 계산하기 위해 np.char.count() 메서드를 호출합니다. 첫 번째 인수에는 배열, 두 번째 인수에는 찾고자 하는 부분 문자열을 전달합니다.
print("\nResult (count)...\n", np.char.count(arr, 'A'))전체 예제 코드
import numpy as np
# 1차원 문자열 배열 생성
arr = np.array(['kATIE', 'JOHN', 'KAte', 'AmY', 'BRADley'])
# 배열 출력
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)
# 부분 문자열 'A'의 비중첩 출현 횟수 계산
# 첫 번째 매개변수는 검색할 부분 문자열(sub)입니다.
print("\nResult (count)...\n", np.char.count(arr, 'A'))실행 결과
Array... ['kATIE' 'JOHN' 'KAte' 'AmY' 'BRADley'] Array datatype... <U7 Array Dimensions... 1 Our Array Shape... (5,) Number of elements in the Array... 5 Result (count)... [1 0 1 1 1]
출력 결과에서 볼 수 있듯이, 각 문자열에서 대문자 'A'가 몇 번 나타나는지 요소별로 계산되어 [1 0 1 1 1]이라는 배열로 반환됩니다. 예를 들어 'JOHN'에는 'A'가 없으므로 0, 그 외의 문자열에는 각각 1번씩 포함되어 있어 1이 반환됩니다.
참고로 np.char.count()는 대소문자를 구분하며, 세 번째 인수로 start와 end 값을 지정하면 특정 범위 내에서만 개수를 셀 수도 있습니다.