2017-07-26 48 views
1

假設我有如何將一堆二進制數字的行轉換爲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中?

+0

你到目前爲止嘗試過什麼? 請提供您嘗試過的一些樣品,我們很樂意幫助您縮小最佳解決方案的範圍。 –

+0

https://stackoverflow.com/questions/15505514/binary-numpy-array-to-list-of-integers –

回答

2

您可以使用matrix-multiplicationnp.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]) 
+0

將閱讀一週:) –

+0

也可以使用'np.packbits'和'np.right_shift' 。事實上,我想我會在非欺騙問題中加入這個答案。 –

相關問題