2012-04-22 10 views
2

でPythonの操作をしてください:はnumpyのを使用して、ちょうどバイナリでmarticesを印刷しようとしたバイナリ

import numpy 

G=numpy.matrix('100011;010101;001110') 

H = numpy.matrix('011100;101010;110001') 

print G 
print H 

戻り

[[100011] 
[ 4161] 
[ 584]] 
[[ 4672] 
[101010] 
[110001]] 

は、どのように私は、バイナリで行列演算を行うためにも、バイナリで私の行列を維持することができ同じように?おかげさまで

答えて

3

"バイナリ"とは "ブール値"を意味しますか?

import numpy as np 

g = np.array([[1, 0, 0, 0, 1, 1], 
       [0, 1, 0, 1, 0, 1], 
       [0, 0, 1, 1, 1, 0]], dtype=bool) 

h = np.array([[0, 1, 1, 1, 0, 0], 
       [1, 0, 1, 0, 1, 0], 
       [1, 1, 0, 0, 0, 1]], dtype=bool) 

を(そして、なぜ世界であなたは??使用している構文を使用している)限り違いとして、1 + 1を考えます。バイナリでは、20b10)になります。ブール値表現では、1となります。

[0, 1] + [0, 1]をにする場合は、バイナリが必要です。 [0, 1]にしたい場合は、ブール値にします。

同様に、[1, 1] + [1, 0][1, 0, 1]にする場合は、バイナリにします。 [1, 1]にしたい場合は、ブール値にします。あなたは(ブール値を使用して)言及操作のいくつかの例として

print 'g * h ...' 
print g * h 

print 'g * h viewed as integers...' 
print (g * h).view(np.int8) # or x.astype(int), but the latter makes a copy 

a = np.array([1, 1, 0], dtype=bool) 
print 'Matrix multiplication of [1, 1, 0] with g...' 
print a.dot(g) # Or we could do g.T.dot(a) 

この利回り:

g * h ... 
[[False False False False False False] 
[False False False False False False] 
[False False False False False False]] 

g * h viewed as integers... 
[[0 0 0 0 0 0] 
[0 0 0 0 0 0] 
[0 0 0 0 0 0]] 

Matrix multiplication of [1, 1, 0] with g... 
[ True True False True True True] 
+0

私はバイナリ意味、私はのオフシンドロームデコードを実装しようとしていますG生成行列、Hをパリティ検査行列とする。私はMATLABを使ってこの作業を処理していますので、可能だったので行列の構文をデフォルトにしました。あなたの入力をありがとうが、私はブール値として値を実装する場合、私は操作から正しい結果を得ることができるか分からない。 – lethalFishHead

+0

私は混乱しています...物事を "バイナリ"として望むなら、接頭辞は '0b'です。例えば。 '0b11'は' 3'を返します。その場合、配列は(正しく)整数になります。 (あなたは 'print bin(x)'を実行することでバイナリ表現でそれらを印刷することができます)個々のビットの配列が必要な場合は、ブール表現が必要です... 'G * H'または' G + Hは戻ってくる? –

+0

理想的に言えば、[1,1,0]というvarを持つことができ、これをGで掛けて[1,1,0,1,0,1]を返すことができます。 G * Hは、すべてゼロの行列を返さなければならない。 – lethalFishHead

関連する問題