- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
import numpy as np
import scipy as sc
from sklearn.preprocessing import normalize
import scipy.sparse as sp
import numpy
import numpy as np
import scipy.sparse as sp
def func1(A,c,eps,maxiter):
c=0.8
eps=1e-4
maxiter=20
n=sc.shape(A)[0]
sim=sc.eye(n)
sim_prev=sc.zeros((n,n))
I=sc.eye(n)
P= normalize(A, norm='l1', axis=0)
Q=P*(1-sc.exp(-A))
for t in range(maxiter):
sim=c*(sc.dot(Q.T,sim)) + (1-c)*I
return sim
def func2(A,c,maxiter):
c=0.8
eps=1e-4
maxiter=20
n=sp.csr_matrix.get_shape(A)[0]
sim=sp.eye(n)
I=sp.eye(n)
P= normalize(A, norm='l1', axis=0)
Q =-(P*(np.expm1(-A)))
for t in range(maxiter):
sim=c*(sc.dot(Q.T,sim)) + (1-c)*I
return sim
上面给出的是两个基本相同的函数,除了 func1 用于 numpy 数组而 func2 用于数据的 scipy 稀疏表示。因为我现在正在处理大数据,所以我想将我的代码转换为稀疏表示,但是对于相同的输入,输出会有所不同。
A=sc.array([[0,1,1,0,1],[1,0,0,1,0],[1,0,0,0,0],[0,1,0,0,0],[1,0,0,0,0]]) #pass this to the func1
sA = sp.csr_matrix(A)#pass this to func2
output of the sparse func2
(0, 0) 3292.45824232
(0, 3) 777.213797401
(1, 1) 0.798590816646
(1, 2) 0.244114817184
(1, 4) 0.244114817184
(2, 1) 0.244114817184
(2, 2) 0.205180591139
(2, 4) 0.105180591139
(3, 0) 777.213797401
(3, 3) 183.603052715
(4, 1) 0.244114817184
(4, 2) 0.105180591139
(4, 4) 0.205180591139
output of func1
[[ 0.13890945 0.0314584 0.02635767 0.00893873 0.02635767]
[ 0.04718761 0.12997072 0.00893873 0.03698614 0.00893873]
[ 0.07907301 0.01787747 0.11498536 0.00510073 0.01498536]
[ 0.0268162 0.07397228 0.00510073 0.12103198 0.00510073]
[ 0.07907301 0.01787747 0.01498536 0.00510073 0.11498536]]
最佳答案
您确实在密集矩阵中使用了逐元素矩阵乘法,在稀疏矩阵中使用了矩阵乘法!
它归结为 A*B
在 numpy 数组和 scipy.sparse 矩阵方面意味着不同的东西。由于这取决于所使用的形状,我有点害怕给出一般规则,只是建议阅读 numpy 和 scipy.sparse 的文档(简化:A * B = numpy 数组的元素乘法,而 A. dot(B) 矩阵乘法;A * B = 稀疏矩阵的矩阵乘法)。
更改(仅限稀疏版本):
Q =-(P*(np.expm1(-A))) # matrix-multiplication
到:
Q =-(P.multiply(np.expm1(-A))) # elementwise-multiplication
哪些输出:
dense
[[0.25619944 0.04951776 0.04318623 0.01252072 0.04318623]
[0.07427664 0.24367873 0.01252072 0.06161358 0.01252072]
[0.12955869 0.02504144 0.22183936 0.00633153 0.02183936]
[0.03756215 0.12322716 0.00633153 0.23115801 0.00633153]
[0.12955869 0.02504144 0.02183936 0.00633153 0.22183936]]
sparse
[[0.25619944 0.04951776 0.04318623 0.01252072 0.04318623]
[0.07427664 0.24367873 0.01252072 0.06161358 0.01252072]
[0.12955869 0.02504144 0.22183936 0.00633153 0.02183936]
[0.03756215 0.12322716 0.00633153 0.23115801 0.00633153]
[0.12955869 0.02504144 0.02183936 0.00633153 0.22183936]]
关于python - 与 numpy 数组相比,稀疏表示中的不同输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47613378/
我在服务器上 checkout 了一个 git 存储库。该存储库过去在根目录下包含所有相关文件,但我必须进行一些更改,现在我有两个文件夹,src 和 dist,我想跟踪这两个文件夹. 我遇到的问题是,
我很难弄清楚 VkDescriptorSetLayoutBinding::binding 的任何用例,这是结构: struct VkDescriptorSetLayoutBinding { u
Python中能否有效获取稀疏向量的范数? 我尝试了以下方法: from scipy import sparse from numpy.linalg import norm vector1 = spa
我正在尝试找出为什么这段代码不对数组进行排序... 任意向量。 x = array([[3, 2, 4, 5, 7, 4, 3, 4, 3, 3, 1, 4, 6, 3, 2, 4, 3, 2]])
有谁知道如何压缩(编码)稀疏 vector ?稀疏 vector 表示有许多“0”的 1xN 矩阵。 例如 10000000000001110000000000000000100000000 上面是稀
我使用稀疏高斯过程进行 Rasmussen 回归。[http://www.tsc.uc3m.es/~miguel/downloads.php][1] 预测平均值的语法是: [~, mu_1, ~, ~
我在朴素贝叶斯分类器中使用 Mahout API。其中一个功能是 SparseVectorsFromSequenceFiles虽然我已经尝试过旧的谷歌搜索,但我仍然不明白什么是稀疏 vector 。最
我正在尝试将JavaScript稀疏数组映射到C#表示形式。 建议这样做的方法是什么? 它正在考虑使用一个字典,该字典包含在原始数组中包含值的原始词列表。 还有其他想法吗? 谢谢! 最佳答案 注意 针
如果我想求解一个完整上三角系统,我可以调用linsolve(A,b,'UT')。然而,这目前不支持稀疏矩阵。我该如何克服这个问题? 最佳答案 UT 和 LT 系统是最容易解决的系统之一。读一读on t
我有一个带有 MultiIndex 的 Pandas DataFrame。 MultiIndex 的值在 (0,0) 到 (1000,1000) 范围内,该列有两个字段 p 和 q. 但是,DataF
我目前正在实现一个小型有限元模拟。使用 Python/Numpy,我正在寻找一种有效的方法来创建全局刚度矩阵: 1)我认为应该使用coo_matrix()从较小的单元刚度矩阵创建稀疏矩阵。但是,我可以
a , b是 1D numpy ndarray与整数数据类型具有相同的大小。 C是一个 2D scipy.sparse.lil_matrix . 如果索引[a, b]包含重复索引,C[a, b] +=
我有一个大的、连通的、稀疏的邻接表形式的图。我想找到两个尽可能远的顶点,即 diameter of the graph以及实现它的两个顶点。 对于不同的应用程序,我对无向和有向情况下的这个问题都很感兴
上下文:我将 Eigen 用于人工神经网络,其中典型维度为每层约 1000 个节点。所以大部分操作是将大小为 ~(1000,1000) 的矩阵 M 与大小为 1000 的 vector 或一批 B v
我有一些大小合适的矩阵 (2000*2000),我希望在矩阵的元素中有符号表达式 - 即 .9**b + .8**b + .7**b ... 是一个元素的例子。矩阵非常稀疏。 我通过添加中间计算来创建
在 R 或 C++ 中是否有一种快速填充(稀疏)矩阵的方法: A, B, 0, 0, 0 C, A, B, 0, 0 0, C, A, B, 0 0, 0, C, A, B 0, 0, 0, C, A
我有一个大的稀疏 numpy/scipy 矩阵,其中每一行对应于高维空间中的一个点。我想进行以下类型的查询: 给定一个点P(矩阵中的一行)和一个距离epsilon,找到与epsilon距离最大的所有点
假设我有一个 scipy.sparse.csr_matrix 代表下面的值 [[0 0 1 2 0 3 0 4] [1 0 0 2 0 3 4 0]] 我想就地计算非零值的累积和,这会将数组更改为:
我了解如何在 Git 中配置稀疏 checkout ,但我想知道是否可以消除前导目录。例如,假设我有一个 Git 存储库,其文件夹结构如下: 文件夹1/foo 文件夹2/foo/bar/stuff 文
根据 this thread , Git 中的排除 sparse-checkout feature应该实现。是吗? 假设我有以下结构: papers/ papers/... presentations
我是一名优秀的程序员,十分优秀!