2014-04-17 71 views
0

我有以下numpy的陣列如何打印numpy的數組中的二進制表示的模式

a = np.array([[1,2,3,4 ,11, 12,13,14,21,22,23,24,31,32,33,34 ]], dtype=uint8)

當我打印AI正在以下輸出

[[ 1 2 3 4 11 12 13 14 21 22 23 24 31 32 33 34]] 

我怎樣才能輸出二進制表示?

例如

[[ 00000001 00000010 00000011 00000100 ...]] 

回答

1

試試這個。

np.array(map(bin, a.flatten())).reshape(a.shape) 
+0

這工作得很好,速度很快。謝謝 – user3543783

+0

這是迄今爲止最快的解決方案 – user3543783

1

這個怎麼樣?

a = np.array([[1,2,3,4 ,11, 12,13,14,21,22,23,24,31,32,33,34 ]], dtype=uint8) 
print [bin(n) for n in a[0]] 

使用numpy的unpackbits,這也可以工作。

A=np.unpackbits(a, axis=0).T 
print [''.join(map(str,a)) for a in A] 
+0

第一個解決方案正常工作。 – user3543783

+0

第二個拋出「TypeError:參數2映射()必須支持迭代」 – user3543783

+0

我認爲你的數組不是2d。在你的問題中,你使用了兩個括號'[[]]'。 – ysakamoto

2

這給了爲u需要

[bin(x)[2:].zfill(8) for x in a] 

出把

['00000001', '00000010', '00000011'] 
+0

這工作完美。謝謝..它正在花費類似的時間來使用矢量化。 – user3543783

+0

請讓它打勾..和ote up :) –