gpt4 book ai didi

python - 如何在Python中将二进制数字行堆栈转换为值列?

转载 作者:行者123 更新时间:2023-12-01 02:45:01 26 4
gpt4 key购买 nike

假设我有

>>> np.array([[0,0],[0,1],[1,0],[1,1]])
array([[0, 0],
[0, 1],
[1, 0],
[1, 1]])

这是一个矩阵,其中的每一行都可以看作某个数字的二进制表示,所以它是

>>> np.array([[0],[1],[2],[3]])
array([[0],
[1],
[2],
[3]])

如何在Python中以最短的方式计算这个转换?

最佳答案

您可以将矩阵乘法np.dot一起使用使用适当的 2 次方数字对每列进行元素级缩放,然后对每行进行求和归约,这导致我们有几种方法 -

a.dot(2**np.arange(a.shape[1]-1,-1,-1))
a[:,::-1].dot(2**np.arange(a.shape[1]))
a.dot(1 << np.arange(a.shape[1])[::-1])

示例运行 -

In [557]: a = np.array([[0,0],[0,1],[1,0],[1,1]])

In [558]: a.dot(2**np.arange(a.shape[1]-1,-1,-1))
Out[558]: array([0, 1, 2, 3])

In [559]: a[:,::-1].dot(2**np.arange(a.shape[1]))
Out[559]: array([0, 1, 2, 3])

In [566]: a.dot(1 << np.arange(a.shape[1])[::-1])
Out[566]: array([0, 1, 2, 3])

关于python - 如何在Python中将二进制数字行堆栈转换为值列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45337039/

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