Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,如何将二进制数字行堆栈转换为值列?_Python_Numpy_Binary_Number Systems - Fatal编程技术网

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

在Python中,如何将二进制数字行堆栈转换为值列?,python,numpy,binary,number-systems,Python,Numpy,Binary,Number Systems,如果我有 >>> 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.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中以最短的方式计算此转换?

您可以使用
矩阵乘法
使用适当的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])
a.dot(2**np.arange(a.shape[1]-1,-1,-1))
a[:,:-1].dot(2**np.arange(a.shape[1]))

a、 dot(1到目前为止您尝试过什么?请提供一些您尝试过的示例,我们很乐意帮助您缩小最佳解决方案的范围。将阅读一周:)也可以使用
np.packbits
np.right\u shift
。事实上,我想我会在非重复问题的答案中添加这一点。
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])