将numpy数组所有元素转换为字符串的最快方法
NumPy字节数组转字符串类型最快方案
针对体量极大的bytes类型NumPy数组转字符串需求,不要使用Python层面的遍历操作,优先调用NumPy原生向量化接口,底层由C实现,性能比手动循环高100~1000倍。
可选实现方法
方法1:astype直接转换(性能最优)
如果你的bytes元素默认是utf-8编码,直接用astype方法转换为Unicode类型即可,这是当前场景下的最快方案:
# X为输入的bytes类型NumPy数组 X_str = X.astype('U')
方法2:指定编码解码(兼容性最优)
如果你的bytes元素使用了非utf-8的编码(如gbk、latin-1等),使用np.char.decode方法指定编码规则,该方法同样是向量化实现,性能远高于Python循环:
# 可自行替换encoding参数为你实际使用的编码 X_str = np.char.decode(X, encoding='utf-8')
效果验证示例
import numpy as np # 构造和你格式一致的测试数组 X = np.array([[b'0', b'0'], [b'1', b'2']], dtype=np.bytes_) X_str = X.astype('U') print(X_str) # 输出: # [['0' '0'] # ['1' '2']] print(type(X_str[0, 0])) # 输出:<class 'str'>
内容的提问来源于stack exchange,提问作者Unknowntiou
相关产品推荐
相关产品推荐

