Skip to content

NumPy - 字符串函数

NumPy 在 numpy.char 模块中提供了一系列向量化字符串操作。这些函数允许您将标准字符串操作按元素级别地应用于字符串或 Unicode 数据类型的 NumPy 数组(numpy.str_、numpy.bytes_,或包含 Python 字符串的对象数组)。

这些函数的行为类似于 Python 的内置字符串方法,但能够高效地操作整个数组。不过,值得注意的是,对于复杂的文本处理任务,像 Pandas(及其 Series 字符串方法)或结合标准字符串方法的原生 Python 列表推导式可能会提供更大的灵活性,有时甚至更好的性能。

当您的字符串数据已存在于 NumPy 数组中,并且需要执行简单的元素级别转换时,numpy.char 函数特别有用。

以下是 numpy.char 中一些常用函数的摘要:

函数描述
add()对两个数组执行元素级别字符串连接。
multiply()对字符串执行元素级别重复。
center()在指定宽度的字符串中居中对齐每个元素。
capitalize()将每个元素的第一个字符转换为大写。
title()将每个元素转换为标题格式(每个单词的首字母大写)。
lower()将每个元素转换为小写。
upper()将每个元素转换为大写。
split()基于分隔符将每个元素分割成字符串列表。
splitlines()基于换行符将每个元素分割成行列表。
strip()从每个元素中移除开头/结尾的空白字符(或指定字符)。
join()使用指定分隔符连接序列的元素(应用于数组中的每个元素)。
replace()在每个元素中替换子字符串的所有出现。
decode()使用指定编码执行元素级别解码(例如,从字节串到字符串)。需要一个字节数组。
encode()使用指定编码执行元素级别编码(例如,从字符串到字节串)。需要一个字符串数组。

示例用法:

import numpy as np
str_array = np.array([' hello ', ' world '], dtype=np.str_)
# Strip whitespace
stripped = np.char.strip(str_array)
print(f"Stripped: {stripped}")
# Convert to uppercase
upper_case = np.char.upper(stripped)
print(f"Uppercase: {upper_case}")
# Concatenate with another array
array2 = np.array([' numpy', '!'], dtype=np.str_)
added = np.char.add(upper_case, array2)
print(f"Added: {added}")

输出:

Stripped: ['hello' 'world']
Uppercase: ['HELLO' 'WORLD']
Added: ['HELLO numpy' 'WORLD!']

虽然 NumPy 可以处理字符串数组(dtype=str 或 dtype=object),但请记住它的核心优势在于数值计算。对于大量的文本操作,考虑利用专门为此设计的工具。

在 numpy.char 文档 中探索完整的函数列表和详细信息。