gpt4 book ai didi

python - numpy中十进制整数数组到二进制数组的矢量化转换

转载 作者:行者123 更新时间:2023-12-05 04:05:10 27 4
gpt4 key购买 nike

我正在尝试将一个整数数组转换为它们在 Python 中的二进制表示形式。我知道原生 python 有一个名为 bin 的函数可以执行此操作。 Numpy 也有类似的函数:numpy.binary_repr

问题是这些都不是向量化方法,因为它们一次只取一个值。因此,为了转换整个输入数组,我必须使用 for 循环并多次调用这些函数,这不是很有效。

有没有什么方法可以不使用 for 循环来执行此转换?这些功能是否有任何矢量化形式?我试过 numpy.apply_along_axis 但没有成功。我也尝试过使用 np.fromitermap,但也不行。

我知道类似的问题也被问过几次(比如 here ),但给出的答案实际上都不是矢量化的。

将我指向任何方向将不胜感激!

谢谢 =)

最佳答案

最简单的方法是使用 binary_reprvectorize,它将保留原始数组形状,例如:

binary_repr_v = np.vectorize(np.binary_repr)
x = np.arange(-9, 21).reshape(3, 2, 5)
print(x)
print()
print(binary_repr_v(x, 8))

输出:

[[[-9 -8 -7 -6 -5]
[-4 -3 -2 -1 0]]

[[ 1 2 3 4 5]
[ 6 7 8 9 10]]

[[11 12 13 14 15]
[16 17 18 19 20]]]

[[['11110111' '11111000' '11111001' '11111010' '11111011']
['11111100' '11111101' '11111110' '11111111' '00000000']]

[['00000001' '00000010' '00000011' '00000100' '00000101']
['00000110' '00000111' '00001000' '00001001' '00001010']]

[['00001011' '00001100' '00001101' '00001110' '00001111']
['00010000' '00010001' '00010010' '00010011' '00010100']]]

关于python - numpy中十进制整数数组到二进制数组的矢量化转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51471097/

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