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

Python 在SciPy中将十进制矩阵转换为二进制矩阵,python,scipy,Python,Scipy,假设我有一个整数矩阵,它表示谁给谁发了电子邮件,发了多少次。对于社交网络分析,我想做一个简单的无向图。所以我需要将矩阵转换成二进制矩阵,然后再转换成元组列表 我的问题是:有没有一种快速、方便的方法将十进制矩阵简化为二进制矩阵 以便: 26, 3, 0 3, 195, 1 0, 1, 17 变成: 1, 1, 0 1, 1, 1 0, 1, 1 将scipy.sign函数应用于矩阵中的每个单元格 [编辑]Cudos至: 如果x是您的矩阵,那么scipy.sign(x)将为您提供二进制矩阵。您可

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

我的问题是:有没有一种快速、方便的方法将十进制矩阵简化为二进制矩阵

以便:

26, 3, 0
3, 195, 1
0, 1, 17
变成:

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

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

[编辑]Cudos至:


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

您也可以尝试以下操作:

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

我想这也会更快。

如果x是你的矩阵,那么:scipy.sign(x)会给出二进制矩阵。