2017-06-18 56 views
1

我正在使用python-3.x,我試圖將一個numpy數組「Binary's」的列表轉換爲十進制數,因爲我知道我需要將這些二進制的第一個字符串,然後我可以將它們轉換爲十進制例如:將二進制對象的數組轉換爲Python 3中的字符串

1.Binary = 101011111 >>>2.String = '101011111' >>>>>3.decimal = 351

binary= '101011111' 
binary = int(binary, 2) 
print (binary) 

但是有沒有什麼辦法可以將Binary的清單直接轉換爲小數我不想將它們轉換爲字符串?

1.Binary = 101011111 >>>2.decimal = 351

My input is: 
Type: int64 
Size:(3, 8) 
Value: array:([[1,0,0,1,1,0,0,0], 
       [1,1,1,1,1,0,0,0], 
       [1,0,0,1,1,1,0,1]]) 

the output: ([[152], 
       [248], 
       [157]]) 

+0

binary?十進制?它是data_representation_。你的輸入數據是什麼? –

+0

你是什麼意思一個「二進制」?什麼是「類型」? –

+0

我的輸入是:類型:int64 - 大小:(3,8) - 值:數組([[1,0,0,1,1,0,0,0],[1,1,1,1,1 ,0,0,0],[1,0,0,1,1,1,0,1]]) – azeez

回答

1

由於您的二進制數是從陣列內置,每個陣列位置表示某基準值( 2**n)或左移(<< n)。此,隨着numpy廣播一起,允許等的溶液:

binary = np.array([[1, 0, 0, 1, 1, 0, 0, 0], 
        [1, 1, 1, 1, 1, 0, 0, 0], 
        [1, 0, 0, 1, 1, 1, 0, 1]]) 

wordlength = binary.shape[1] 
shift = np.arange(wordlength-1, -1, -1) 

decimal = np.sum(binary << shift, 1) 

因此,我生成一個簡單的範圍從n-1降至0然後我廣播,並使用到移位每個二進制數位以獲得其值。然後我只是總結了每個二進制數的維數值。

相關問題