2017-07-26 3 views
1

Iこれは、それが最短の方法でこの変換を計算する方法2進数の行をPythonの値の列に変換する方法は?

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

なるように線のそれぞれは、ある数のバイナリ表現とみなすことができ、マトリックスである

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

があるとPythonで?

あなたが適切な2電源の数字で各列の要素単位のスケーリングを行い、その後、いくつかのアプローチに私たちをリードし、各行の和減らすために np.dotmatrix-multiplicationを使用することができます
+0

これまでに何を試みましたか? 試したことのいくつかのサンプルを提供してください。最適なソリューションを絞り込んでお手伝いさせていただきます。 –

+0

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

答えて

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

それは1週間読むでしょう:) –

+0

'np.packbits'と' np.right_shift'も使用できます。実際には、私はそれを非重複問題の答えに追加すると思います。 –

関連する問題