gpt4 book ai didi

Python - Numpy - 将十六进制字符串的 numpy 数组转换为整数

转载 作者:行者123 更新时间:2023-12-03 20:26:08 34 4
gpt4 key购买 nike

我有一个 numpy 十六进制字符串数组(例如:['9', 'A', 'B'])并且想将它们全部转换为 0 255 之间的整数。我知道如何做到这一点的唯一方法是使用 for循环并附加一个单独的 numpy 数组。

import numpy as np

hexArray = np.array(['9', 'A', 'B'])

intArray = np.array([])
for value in hexArray:
intArray = np.append(intArray, [int(value, 16)])

print(intArray) # output: [ 9. 10. 11.]

有一个更好的方法吗?

最佳答案

具有数组 View 功能的矢量化方式 -

In [65]: v = hexArray.view(np.uint8)[::4]

In [66]: np.where(v>64,v-55,v-48)
Out[66]: array([ 9, 10, 11], dtype=uint8)

计时

使用按 1000x 放大的给定样本进行设置——
In [75]: hexArray = np.array(['9', 'A', 'B'])

In [76]: hexArray = np.tile(hexArray,1000)

# @tianlinhe's soln
In [77]: %timeit [int(value, 16) for value in hexArray]
1.08 ms ± 5.67 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

# @FBruzzesi soln
In [78]: %timeit list(map(functools.partial(int, base=16), hexArray))
1.5 ms ± 40.5 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

# From this post
In [79]: %%timeit
...: v = hexArray.view(np.uint8)[::4]
...: np.where(v>64,v-55,v-48)
15.9 µs ± 294 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

关于Python - Numpy - 将十六进制字符串的 numpy 数组转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60868884/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com