이 글에서는 NumPy 배열에 저장된 각 문자열 요소의 길이를 구하는 방법을 알아보겠습니다. NumPy는 파이썬에서 수치 연산을 위해 널리 사용되는 라이브러리로, 매우 강력한 배열 클래스를 제공합니다. 이를 활용하면 데이터를 배열 형태로 효율적으로 저장하고 처리할 수 있습니다.
문자열 배열의 각 요소 길이를 구하는 방법은 크게 두 가지가 있습니다. 하나는 np.vectorize() 함수를 활용하는 방법이고, 다른 하나는 반복문(리스트 컴프리헨션)을 사용하는 방법입니다.
방법 1: np.vectorize() 사용
np.vectorize()는 일반 파이썬 함수를 배열 전체에 적용할 수 있도록 벡터화해 주는 함수입니다. 내장 함수 len을 벡터화하면 배열의 모든 문자열 요소에 대해 길이를 한 번에 계산할 수 있습니다.
예제 코드
import numpy as np
str_arr = np.array(['Hello', 'Computer', 'Mobile', 'Language', 'Programming', 'Python'])
print('배열 내용:', str_arr)
len_check = np.vectorize(len)
len_arr = len_check(str_arr)
print('각 요소의 길이:', len_arr)
실행 결과
배열 내용: ['Hello' 'Computer' 'Mobile' 'Language' 'Programming' 'Python']
각 요소의 길이: [ 5 8 6 8 11 6]
출력 결과를 보면 'Hello'는 5자, 'Computer'는 8자, 'Mobile'은 6자, 'Language'는 8자, 'Programming'은 11자, 'Python'은 6자로 정확하게 계산된 것을 확인할 수 있습니다.
방법 2: 리스트 컴프리헨션(반복문) 사용
두 번째 방법은 리스트 컴프리헨션을 이용해 배열의 각 요소를 순회하면서 len() 함수를 적용하는 것입니다. 코드가 직관적이라 이해하기 쉽다는 장점이 있습니다.
예제 코드
import numpy as np
str_arr = np.array(['Hello', 'Computer', 'Mobile', 'Language', 'Programming', 'Python'])
print('배열 내용:', str_arr)
len_arr = [len(i) for i in str_arr]
print('각 요소의 길이:', len_arr)
실행 결과
배열 내용: ['Hello' 'Computer' 'Mobile' 'Language' 'Programming' 'Python']
각 요소의 길이: [5, 8, 6, 8, 11, 6]
두 방법의 차이점
np.vectorize(len)을 사용하면 결과가 NumPy 배열(ndarray)로 반환되어 이후 NumPy 연산에 바로 활용할 수 있다는 장점이 있습니다. 반면 리스트 컴프리헨션은 일반 파이썬 리스트를 반환하지만, 코드가 단순하고 추가적인 함수 호출 오버헤드가 없어 소규모 데이터에서는 더 빠를 수도 있습니다. 상황과 용도에 맞게 적절한 방법을 선택하면 됩니다.