将Python字节字符串转换为NumPy整数?

3

除了以下方法,还有直接的方法吗?

np.uint32(int.from_bytes(b'\xa3\x8eq\xb5', 'big'))
3个回答

9

np.fromstring已经不再推荐使用了,现在请使用np.frombuffer。您也可以传递一个正常的numpy数据类型:

import numpy as np
np.frombuffer(b'\xa3\x8eq\xb5', dtype=np.uint32)

6

关键是获取正确的数据类型。要从字符串中读取大端 uint32,数据类型(作为字符串)是 '>u4'

>>> np.fromstring(b'\xa3\x8eq\xb5', dtype='>u4')
array([2744021429], dtype=uint32)

这将会给你返回一个数组,但是从中获取一个标量是十分平凡的。更重要的是,它能够一次读取大量对象(通过使用 int.from_bytes 技巧是无法实现的)。

这只是为了哈希值 - 我猜没有优势(实际上有点慢) - 但对于缓冲区来说,这要好得多。 - user3467349
是的,现在我看到了正确的数据类型。 - Eli Korvigo

1

我不确定数据类型。

np.fromstring(b'\xa3\x8eq\xb5', dtype='<i')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接