假设我有一个整数矩阵,它代表谁向谁发送了电子邮件以及发送了多少次。对于社交网络分析,我想制作一个简单的无向图。所以我需要将矩阵转换为二进制矩阵,然后再转换为元组列表。
我的问题:有没有一种快速、方便的方法可以将十进制矩阵简化为二进制矩阵。
这样:
26, 3, 0
3, 195, 1
0, 1, 17
变成:
1, 1, 0
1, 1, 1
0, 1, 1
您可以执行以下操作:
>>> 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
部分。您可以将布尔表达式应用于数组,它将返回一个布尔数组。然后将其转换为整数。
你也可以试试这个:
>>>x,y = scipy.where(yourMatrix>0)
>>>yourMatrix[:,:] = 0
>>>yourMatrix[x,y] = 1
我想这也会更快。