我正在写一个程序,它获取一个未格式化的字符串作为输入,并应该输出一个numpy int数组。
字符串包含id、时间戳等和一个十六进制数据数组。假设输入字符串是data_string = '01190810000235a5000235b4000234c5000211a5'
,那么01
是id,190810
是时间戳,000235a5000235b4000234c5000211a5
是值为000235a5, 000235b4, 000234c5, 000211a5
的数据数组。(实际输入字符串的大小为几MB。)
我在将数据数组转换为numpy整数数组时遇到问题。我想出了:
import numpy as np
data_dict['data array'] = np.core.defchararray.asarray(data_string[8:], 8)
但这样我只能得到一个字符串数组。我试图摆弄np.fromstring(data_string[8:], np.int32)
,但这改变了输入字符串的给定值。有没有办法从字符串中获取int数组?使用for循环(或类似的实现)不是一个选项,因为此代码对性能至关重要。在
编辑: 为了澄清我的问题。。。在
输入字符串是
^{pr2}$用np.core.defchararray.asarray()
转换它会得到一个chararray
。但是我想要一个整数类型的数组。在
>>> s1 = np.core.defchararray.asarray(s, 8)
>>> s1
chararray(['000235a5', '000235a5', '000235a5', '000235a5'], dtype='<U8')
用np.fromstring()
转换s
将得到一个整数数组,但它似乎不喜欢十六进制数。在
>>> s2 = np.fromstring(s, dtype=np.int32)
>>> s2
array([842018864, 895563059, 842018864, 878851379, 842018864, 895693875,
842018864, 895562033])
array([000235a5, 000235a5, 000235a5, 000235a5])
是我真正想要得到的结果。在
目前没有回答
相关问题 更多 >
编程相关推荐