草庐IT

sparse-matrix

全部标签

有限差法(Finite Difference)求梯度和Hessian Matrix(海森矩阵)的python实现

数学参考有限差方法求导,FiniteDifferenceApproximationsofDerivatives,是数值计算中常用的求导方法。数学上也比较简单易用。本文主要针对的是向量值函数,也就是f(x):Rn→Rf(x):\mathbb{R^n}\rightarrow\mathbb{R}f(x):Rn→R当然,普通的标量值函数是向量值函数的一种特例。本文采用的数学参考是:有限差方法参考的主要是CentralDifferenceApproximations小节中的Second-orderderivativesbasedongradientcalls的那个公式。代码用法将下面代码中的Hessia

python - 将稀疏数组中的元素与矩阵中的行相乘

如果你有一个稀疏矩阵X:>>X=csr_matrix([[0,2,0,2],[0,2,0,1]])>>printtype(X)>>printX.todense()[[0202][0201]]和一个矩阵Y:>>printtype(Y)>>printtext_scores[[8][5]]...如何将X的每个元素乘以Y的行。例如:[[0*82*80*82*8][0*52*50*51*5]]或:[[016016][01005]]我已经厌倦了这个,但显然它不起作用,因为尺寸不匹配:Z=X.data*Y 最佳答案 不幸的是,如果另一个矩阵是密集

python - 在 scipy 中导入模块有什么问题,是错误吗?

好吧,我不认为,我可以用语言来解释这个问题,所以,这是ipythonsession的片段,我在其中导入scipy,以构建一个稀疏矩阵。In[1]:importscipyasspIn[2]:a=sp.sparse.lil_matrix((5,5))---------------------------------------------------------------------------AttributeErrorTraceback(mostrecentcalllast)/home/liveuser/in()---->1a=sp.sparse.lil_matrix((5,5))A

python - scipy.cluster.vq.kmeans2 中的 "Matrix is not positive definite"错误

我正在尝试对128维点(图像中兴趣点的描述符)执行kmeans聚类。当我使用scipy.cluster.vq.kmeans2函数时,有时会出现以下错误:File"main.py",line21,inlevel_routinecurrent.centroids,current.labels=cluster.vq.kmeans2(current.descriptors,k)File"/usr/lib/python2.7/dist-packages/scipy/cluster/vq.py",line706,inkmeans2clusters=init(data,k)File"/usr/lib

python - CVXOPT QP 求解器 : TypeError: 'A' must be a 'd' matrix with 1000 columns

我正在尝试使用CVXOPTqp求解器计算支持向量机的拉格朗日乘数defsvm(X,Y,c):m=len(X)P=matrix(np.dot(Y,Y.T)*np.dot(X,X.T))q=matrix(np.ones(m)*-1)g1=np.asarray(np.diag(np.ones(m)*-1))g2=np.asarray(np.diag(np.ones(m)))G=matrix(np.append(g1,g2,axis=0))h=matrix(np.append(np.zeros(m),(np.ones(m)*c),axis=0))A=np.reshape((Y.T),(1,m)

python - Scipy 稀疏矩阵 - 密集向量乘法性能 - block 与大型矩阵

我有许多scipy稀疏矩阵(目前为CSR格式),我需要将它们与密集的numpy一维向量相乘。该向量称为G:printG.shape,G.dtype(2097152,)complex64每个稀疏矩阵的形状都是(16384,2097152)并且非常稀疏。密度约为4.0e-6。我有一个包含100个稀疏矩阵的列表,称为spmats。我可以像这样轻松地将每个矩阵与G相乘:res=[spmat.dot(G)forspmatinspmats]这会按预期生成形状为(16384,)的密集向量列表。我的应用程序对性能相当关键,所以我尝试了一种替代方法,即首先将所有稀疏矩阵连接成一个大的稀疏矩阵,然后只使用

python - 使用索引和值将值添加到 Scipy 稀疏矩阵

我正在研究电力系统分析程序,我需要使用稀疏矩阵。有一个例程,我只使用以下调用填充稀疏矩阵:self.A=bsr_matrix((val,(row,col)),shape=(nele,nbus),dtype=complex)因为这个矩阵不会随时间改变。另一个矩阵确实会随着时间的推移而变化,我需要更新它。有没有办法,例如:co=[2,3,6]row=[5,5,5]val=[0.1+0.1j,0.1-0.2j,0.1-0.4j]我可以将它们添加到先前初始化的稀疏矩阵吗?怎样才是更Pythonic的方式来做到这一点?谢谢 最佳答案 您应该改

python - 在 Python 中访问稀疏矩阵中的单个条目

我想使用稀疏矩阵来表示BOW特征。我已经尝试过scipy的coo_matrix,但它似乎不支持我想做的事情:我想初始化一个全为零的矩阵,然后在适当的时候将给定的条目更改为1。但是,当我尝试按照我认为应该的方式对矩阵进行索引时——例如,myMatrix[0][0]=1(甚至myMatrix[0][0][0]=1)——它会更改所有值连续到1。我只想输入一个条目1。我可以使用numpy矩阵轻松做到这一点,但我想使用稀疏矩阵来提高空间效率。 最佳答案 使用正确的稀疏类型会有所帮助。fromscipyimportsparseM=sparse.

python - 两个仅影响零值的稀疏矩阵的点积

我正在尝试计算一个简单的点积,但保留原始矩阵中的非零值不变。玩具示例:importnumpyasnpA=np.array([[2,1,1,2],[0,2,1,0],[1,0,1,1],[2,2,1,0]])B=np.array([[0.54331039,0.41018682,0.1582158,0.3486124],[0.68804647,0.29520239,0.40654206,0.20473451],[0.69857579,0.38958572,0.30361365,0.32256483],[0.46195299,0.79863505,0.22431876,0.59054473]

python - 用 numpy.NaN 初始化 scipy.sparse 矩阵的最快方法是什么?

我想用numpy数组初始化一个稀疏矩阵。numpy数组包含NaN作为我程序的零,初始化稀疏矩阵的代码如下:a=np.array([[np.NaN,np.NaN,10]])zero_a=np.array([[0,0,10]])spr_a=lil_matrix(a)zero_spr_a=lil_matrix(zero_a)printrepr(spr_a)printrepr(zero_spr_a)输出是1x3sparsematrixoftype'type'numpy.float64''with3storedelementsinLInkedListformat1x3sparsematrixof