栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从矩阵有效地减去向量(Scipy)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从矩阵有效地减去向量(Scipy)

首先,我们将如何处理密集阵列?

mat-vec.A # taking advantage of broadcastingmat-vec.A[:,[0]*3] # explicit broadcastingmat-vec[:,[0,0,0]] # that also works with csr matrix

在https://prereview.stackexchange.com/questions/32664/numpy-scipy-
optimization/33566中,

我们发现

as_strided
mat.indptr
向量上使用是逐步浏览稀疏矩阵行的最有效方法。(本
x.rows
x.cols
一个
lil_matrix
是几乎一样好。
getrow
很慢)。该功能实现了迭代。

def sum(X,v):    rows, cols = X.shape    row_start_stop = as_strided(X.indptr, shape=(rows, 2),      strides=2*X.indptr.strides)    for row, (start, stop) in enumerate(row_start_stop):        data = X.data[start:stop]        data -= v[row]sum(mat, vec.A)print mat.A

vec.A
为了简单起见使用。如果我们保持
vec
稀疏状态,则必须在处添加一个非零值的测试
row
。同样,这种类型的迭代只会修改的非零元素
mat

0's
不变。

我怀疑时间优势将在很大程度上取决于矩阵和向量的稀疏性。如果

vec
有很多零,则进行迭代是有意义的,仅修改
mat
其中
vec
非零的那些行。但是
vec
像这样的例子几乎是密集的,可能很难被击败
mat-vec.A



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/645508.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号