首页 > 解决方案 > 字符串到单个字符的数组,而不沿途转换为列表

问题描述

有没有办法将 Python 字符串转换为 NumPy 字符数组,其中每个单独的字符都是它自己的数组元素,而无需先将字符串转换为列表?我有一个程序必须使用大量数据执行此操作,并且我已将转换步骤本身确定为瓶颈,但我似乎找不到任何 NumPy 函数可以直接获取字符串并以这种方式转换它而无需先创建一个通用 Python 列表。

标签: pythonnumpy

解决方案


IIUC,可以使用fromiter指定dtypeunicode为 length 1

>>> np.fromiter('abcdefg', (np.unicode,1))

官方文档一样,

chararray 类的存在是为了向后兼容 Numarray,不建议用于新开发。从 numpy 1.4 开始,如果需要字符串数组,建议使用 dtype object_、string_ 或 unicode_ 的数组,并使用 numpy.char 模块中的免费函数进行快速向量化字符串操作。

因此,如果您需要使用类似的方法isalpha(),请使用np.char模块,如下所示,而不是np.chararray类:

>>> np.char.isalpha(x)

推荐阅读