在SciPy中将十进制矩阵转换为二进制矩阵

时间:2009-10-06 07:03:42

标签: python scipy

假设我有一个整数矩阵,表示谁通过电子邮件发送过谁和多少次。对于社交网络分析,我想制作一个简单的无向图。所以我需要将矩阵转换为二进制矩阵,然后转换为元组列表。

我的问题:是否有一种快速,方便的方法将十进制矩阵缩减为二进制矩阵。

这样:

26, 3, 0
3, 195, 1
0, 1, 17

变为:

1, 1, 0
1, 1, 1
0, 1, 1

3 个答案:

答案 0 :(得分:2)

scipy.sign函数应用于矩阵中的每个单元格。

[编辑]赞扬speciousfool

如果x是您的矩阵,则scipy.sign(x)会为您提供二进制矩阵。

答案 1 :(得分:2)

您可以执行以下操作:

>>> 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部分。您可以将布尔表达式应用于数组,它将返回一个布尔数组。然后它被转换为整数。

答案 2 :(得分:1)

你也可以试试这个:

>>>x,y = scipy.where(yourMatrix>0)
>>>yourMatrix[:,:] = 0
>>>yourMatrix[x,y] = 1

我想这也会更快。

相关问题