在numpy中组合稀疏阵列和遮罩阵列
有没有一种方便的方法可以在稀疏矩阵上使用屏蔽数组 因为在使用scipy稀疏矩阵创建遮罩阵列时,遮罩似乎不起作用在numpy中组合稀疏阵列和遮罩阵列,numpy,sparse-matrix,Numpy,Sparse Matrix,有没有一种方便的方法可以在稀疏矩阵上使用屏蔽数组 因为在使用scipy稀疏矩阵创建遮罩阵列时,遮罩似乎不起作用 一个典型的应用是邻接矩阵,其中的值可以是{0,1,},用于表示网络中的链接{0,1},而未知/看不见的值{},用于预测。我并不奇怪,试图为屏蔽提供稀疏矩阵是行不通的。少数使用稀疏函数的numpy函数是将任务委托给稀疏代码的函数 也许可以用data属性作为掩码数组来构造coo格式矩阵,但我怀疑这是否有效。未屏蔽的代码通常会忽略屏蔽 掩码数组是一个ndarray子类,它维护两个属性,数据和
一个典型的应用是邻接矩阵,其中的值可以是{0,1,},用于表示网络中的链接{0,1},而未知/看不见的值{},用于预测。我并不奇怪,试图为屏蔽提供稀疏矩阵是行不通的。少数使用稀疏函数的
numpy
函数是将任务委托给稀疏代码的函数
也许可以用data
属性作为掩码数组来构造coo
格式矩阵,但我怀疑这是否有效。未屏蔽的代码通常会忽略屏蔽
掩码数组是一个ndarray
子类,它维护两个属性,数据和掩码,两者都是数组。许多屏蔽方法的工作原理是用合适的值(0表示总和,1表示乘积)填充屏蔽值,并执行规则数组计算
稀疏矩阵不是ndarray
子类。一种格式实际上是字典子类。大多数将数据存储在3个数组中,即2个坐标和数据。与非稀疏数组的交互通常涉及todense()
将操作转换为常规numpy
操作
设计上没有互操作性。如果某件事真的起作用,那可能是因为某种巧合的方法授权
比如说
In [85]: A=sparse.coo_matrix(np.eye(3))
In [86]: M=np.ma.masked_array(np.eye(3))
In [87]: A+M
Out[87]:
masked_array(data =
[[ 2. 0. 0.]
[ 0. 2. 0.]
[ 0. 0. 2.]],
mask =
False,
fill_value = 1e+20)
In [88]: M+A
NotImplementedError: adding a nonzero scalar to a sparse matrix is not supported
我本以为M+A
会起作用,但从我的理解来看,它是在一个遮罩上增加稀疏。但有时x+y
实际上是作为y来实现的<代码>A+np.eye(3)
在这两种顺序中都起作用。文档提到某些操作可能有副作用。使用numpy.ma.filled
如何根据掩码和填充值将掩码数组转换为普通数组?