In [26]: ar = np.array([[''.join(np.random.choice(list('123456789'), size=320))] for _ in range(1000)], bytes)
In [27]: %timeit _ = ar.view('S1').astype(np.uint8)
1 loops, best of 3: 284 ms per loop
In [28]: %timeit _ = ar.view(np.uint8) - ord('0')
1000 loops, best of 3: 1.07 ms per loop
这里有一种方法,可以将输入字符串转换为N个长度的数字数组,也就是说,每个字符串被转换为长度为
N
的一维数组,其中N
是每个字符串的长度。 这里建议的方法基本上是将字符串转换为它们的int
等价物,然后使用与前面元素power-10
缩放版本的区别来获得所有数字。实现方式如下-样本运行-
^{pr2}$可以使用数组
view
方法将字符串拆分为单个字符:有关数据类型字符代码,请参见here。在
然后最明显的下一步是使用
^{pr2}$astype
:但是,要重新解释单个字节的整数(48)并将其重新解释为整数。这是因为ASCII字符占用一个字节,而} builtin )。在
'0'
到'9'
是二进制的,相当于(u)int8的48到57(检查^{速度比较:
如果使用Unicode而不是ASCII,则需要执行这些步骤略有不同。或者先用
astype(bytes)
转换成ASCII。在相关问题 更多 >
编程相关推荐