如何基于NumPy字符串数组生成指定规则的哈希数组?
实现NumPy字符串数组的哈希计算
针对你的需求,这里提供几种高效的实现方式,优先推荐NumPy向量化操作(适合大数据量场景):
方法一:向量化字节操作(最优)
利用NumPy的字符编码和字节视图直接提取ASCII值,完全避免Python循环,效率最高:
import numpy as np A = np.array(['abcd','bcde','cdef'], dtype='U4') # 将字符串数组编码为ASCII字节数组 A_bytes = np.char.encode(A, encoding='ascii') # 提取第1、2位字符的ASCII值(对应原字符串索引1和2) ord1 = A_bytes[:, 1].view(np.uint8) ord2 = A_bytes[:, 2].view(np.uint8) # 计算哈希数组B B = ord1 * 256 + ord2
执行后B的结果为:
array([ 700, 772, 844], dtype=uint16)
对应手动计算的ord('b')*256+ord('c')=98*256+99=700,完全符合预期。
方法二:列表推导式(小数据场景)
如果数组规模很小,用列表推导式更直观易懂:
import numpy as np A = np.array(['abcd','bcde','cdef']) B = np.array([ord(s[1]) * 256 + ord(s[2]) for s in A])
这种写法简单直接,但数据量较大时,Python循环的效率会远低于NumPy向量化操作。
内容的提问来源于stack exchange,提问作者AlexM
相关产品推荐
相关产品推荐

