2

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]]

行列をバイナリに保持し、行列演算をバイナリで実行するにはどうすればよいですか?ありがとう。

4

1 に答える 1

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][1, 0]バイナリが必要です。にしたい場合は[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]
于 2012-04-22T21:39:33.930 に答える