質問
私は誰電子メールで送信し、何回している人を表す整数行列があるとします。ソーシャルネットワーク分析のために私は、単純な無向グラフを作成したいと思います。だから私は、バイナリ行列に、後にタプルのリストに行列を変換する必要があります。
私の質問:バイナリ行列に小数行列を軽減するための高速、便利な方法があります。
このようなこと:
26, 3, 0
3, 195, 1
0, 1, 17
になります:
1, 1, 0
1, 1, 1
0, 1, 1
解決
行列内のすべてのセルにscipy.sign
機能を適用します。
[EDIT] Cudosに speciousfool の
x
があなたの行列である場合は、そしてscipy.sign(x)
はあなたのバイナリ行列を与えるます。
他のヒント
あなたは次のことを行うことができます:
>>> import scipy
>>> a = scipy.array((12, 0, -1, 23, 0))
array([12, 0, -1, 23, 0])
>>> (a != 0).astype(int)
array([1, 0, 1, 1, 0])
マジックはa != 0
の一部です。あなたは配列にブール式を適用することができ、それがブール値の配列を返します。そして、それはint型に変換されます。
また、これを試すことができます:
>>>x,y = scipy.where(yourMatrix>0)
>>>yourMatrix[:,:] = 0
>>>yourMatrix[x,y] = 1
私はこれも速くなりますと思います。
所属していません StackOverflow