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

我的问题:是否有小数点矩阵减少为二进制矩阵快速,方便的方法。

使得:

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

变为:

1, 1, 0
1, 1, 1
0, 1, 1
有帮助吗?

解决方案

应用scipy.sign函数矩阵中的每一个细胞。

[编辑] 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一部分。您可以将布尔表达式阵列和它将返回boolean数组。然后,它被转换为整数。

您也可以试试这个:

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

我想这也将会更快。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top