首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >枕:稀疏矩阵到ndarray

枕:稀疏矩阵到ndarray
EN

Stack Overflow用户
提问于 2013-11-01 16:06:04
回答 2查看 1.8K关注 0票数 1

我有一个CSC格式的矩阵A,其中我只索引了一列

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
b = A[:,col]

产生(Nx1)矩阵。我想做的是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
v  = M * b

其中M是CSR中的( n )矩阵。结果v是一个(Nx1)CSR-矩阵.我需要迭代v中的值(实际上不包括0),并检索满足特殊条件的一个元素的索引(注意:没有选择稀疏矩阵格式来适应特定的操作,但是一般的矩阵x矩阵-积应该是CSR * CSC最快的,对吗?)

问题是,迭代CSR格式向量(0

有人能告诉我如何执行这些操作吗?这样我就可以快速地迭代结果向量,从而使与复制相关的内存开销保持在较小的范围内?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
IN: M (CSR-Matrix), A (CSC-Matrix), col_index
v = M * A[:,col_index]
for entries in v:
    do stuff

也有可能以某种方式加快CSC中列的“高级”索引吗?在代码的另一点上,我必须提取A的一个子矩阵(不能被重新构造为允许切片,因此使用索引数组),它包括所有列的一个给定子集。当行分析时,idxlist需要相当长的时间.

期待你的建议

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-01 17:16:24

每个版本都会使can稀疏模块变得更好,但是很明显,它正在进行中,所以可以通过直接访问对象的内部来进行许多优化。例如,你的案件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> a = sps.rand(5, 20, density=0.2, format='csr')
>>> b = sps.rand(20, 1, density=0.2, format='csc')
>>> c = a * b
>>> c.A
array([[ 0.30331594],
       [ 0.        ],
       [ 0.12198742],
       [ 0.34350077],
       [ 0.        ]])

您可以将c的非零项作为c.data

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> c.data
array([ 0.30331594,  0.12198742,  0.34350077])

获取相应的行号要复杂一些。可能最简单的方法是将输出转换为CSC格式,因为它们直接以c.indices的形式存在,而c.data仍然与以前一样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> c.tocsc().indices
array([0, 2, 3])
>>> c.tocsc().data
array([ 0.30331594,  0.12198742,  0.34350077])

但是,如果您不喜欢它们,则可以在不执行转换的情况下提取它们:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> np.where(c.indptr[:-1] != c.indptr[1:])[0]
array([0, 2, 3], dtype=int64)

因此,如果您想查找(例如,最大值及其行号),您可以:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> row_idx = np.where(c.indptr[:-1] != c.indptr[1:])[0]
>>> idx = np.argmax(c.data)
>>> c.data[idx], row_idx[idx]
(0.34350077450601624, 3)
票数 1
EN

Stack Overflow用户

发布于 2013-11-01 18:40:20

在代码审查问题中,我正在探索加速稀疏矩阵https://codereview.stackexchange.com/questions/32664/numpy-scipy-optimization/33566#33566行的迭代的方法

csr getrow令人惊讶地慢了下来。至少对于这个小的测试用例,将稀疏矩阵转换为密集数组并使用常规的numpy索引(使用np.nonzero获取稀疏条目)速度更快。同样快的是将矩阵转换为lil,并在zip(X.data, X.rows)上执行常规的Python迭代。

我的印象是,scipy.sparse对线性代数问题最好,而对于索引和迭代则比较慢。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19737401

复制
相关文章
RESTful Web服务
假设需要为users资源创建Web服务,users资源包括id、name和age等属性。获取或改变users资源的方式如下:
SmileNicky
2019/01/17
6630
使用 RESTful Web 服务
本指南将引导您完成创建使用#spring# #spring认证# RESTful Web 服务的应用程序的过程。
IT胶囊
2022/09/06
1.9K2
使用 RESTful Web 服务
什么是 RESTful Web服务
总结就是: 上面的提到的特点,可以总结为“ 用明确的方法 操作 语义清晰的资源,来呈现不同的资源表现形式”。
张云飞Vir
2020/04/24
3K0
Spring Boot使用RESTful Web服务
本章将详细讨论和学习如何使用jQuery AJAX来调用RESTful Web服务。
黑洞代码
2021/09/03
1.4K0
Spring Boot使用RESTful Web服务
使用 Spring 构建 RESTful Web 服务
本指南将引导您完成使用 Spring 创建“Hello, World”RESTful Web 服务的过程。
IT胶囊
2021/09/14
1.3K0
使用 Spring 构建 RESTful Web 服务
Spring Boot构建RESTful Web服务
Spring Boot为为企业应用程序构建RESTful Web服务提供了非常好的支持。本章将详细介绍如何使用Spring Boot构建RESTful Web服务。
黑洞代码
2021/08/05
8210
WebService系列之RESTful Web服务
假设需要为users资源创建Web服务,users资源包括id、name和age等属性。获取或改变users资源的方式如下:
SmileNicky
2022/05/07
4470
WebService系列之RESTful Web服务
RESTful API教程:学习关键的Web服务设计原则
原题:RESTful APIs tutorial: Learn key web service design principles
yuanyi928
2018/09/14
1.8K0
RESTful API教程:学习关键的Web服务设计原则
分布式开发、基于Restful的WEB服务如何实现?
那么既然说到了分布式的开发,那么所有的开发者一定都会立刻联想到一个词:“慢”,对于传统的WEB服务开发(AXIS、XFire、CXF等),而且在编写的时候需要编写一大堆的客户端代码,这样对于整个程序的开发的复杂度还是非常高的,可是在实际的开发之中,如果你作为一个架构师,一定不可能将你一个项目的所有的子系统都设计为一个,中间一定会拆分成若干个子系统,于是这个若干个子系统之间如果要想进行数据的交互处理,只能够使用RPC。
爱明依
2019/03/12
5960
Spring认证指南:了解如何使用 Spring 的 RESTful Web 服务
原标题:Spring认证中国教育管理中心-了解如何使用 Spring 的 RESTful Web 服务(Spring中国教育管理中心)
IT胶囊
2022/01/25
8640
Spring认证指南:了解如何使用 Spring 的 RESTful Web 服务
为什么应该使用RESTful Web服务设计
你可能负责一个API。也许你正准备投入制作一个,并且很期待开始。但是要小心,因为好的API设计可能很难。
程序你好
2018/09/29
1.5K0
Web 开发 RESTful
Flask 的 RESTful 模块是 flask-restful ,使用 pip 安装:
HLee
2021/04/08
1.1K0
Web 开发 RESTful
RESTful web service
REST架构就是为了HTTP协议设计的。RESTful web services的核心概念是管理资源。资源是由URIs来表示,客户端使用HTTP当中的’POST, OPTIONS, GET, PUT, DELETE’等方法发送请求到服务器,改变相应的资源状态。
DuncanZhou
2018/09/04
3580
用python创建一个简单的restful风格的web服务应用
使用python创建一个简单的restful风格的webservice应用 摘要 本文介绍使用python创建一个简单的restful风格的webservice应用,原文地址http://www.d
杨永贞
2020/08/04
7470
用python创建一个简单的restful风格的web服务应用
我所理解的RESTful Web API [Web标准篇]
REST不是一个标准,而是一种软件应用架构风格。基于SOAP的Web服务采用RPC架构,如果说RPC是一种面向操作的架构风格,而REST则是一种面向资源的架构风格。REST是目前业界更为推崇的构建新一代Web服务(或者Web API)的架构风格。由于REST仅仅是一种价格风格,所以它是与具体的技术平台无关的,也就是说采用REST架构的应用未必一定建立在Web之上,所以在正式介绍REST之前,我们先来简单认识一下Web。 目录 一、TCP/IP与HTTP 二、Web资源    
蒋金楠
2018/01/15
1.2K0
我所理解的RESTful Web API [Web标准篇]
关于web前端大作业的HTML网页设计——我的班级网页HTML+CSS+JavaScript
✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (1000套) 】 🧡 程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作 (110套) 】 🌎超炫酷的Echarts大屏可视化源码:【🔰 echarts大屏展示大数据平台可视化(150套) 】 🎁 免费且实用的WEB前端学习指南: 【📂web前端零基础到高级学习视频教程 120G干货分享】 🥇 关于作者: 历任研发工程师,技
IT司马青衫
2022/08/15
1.8K0
关于web前端大作业的HTML网页设计——我的班级网页HTML+CSS+JavaScript
我所理解的RESTful Web API [设计篇]
《我所理解的RESTful Web API [Web标准篇]》Web服务已经成为了异质系统之间的互联与集成的主要手段,在过去一段不短的时间里,Web服务几乎清一水地采用SOAP来构建。构建REST风格的Web服务是最近两三年风行的潮流,所以很多人以为REST是一个事物。而事实却是:REST自其诞生之日起到现在(2014年)已经有14年了,它为什么叫这么一个“奇怪”的名字呢? 目录 一、为什么叫这个“奇怪”的名字?二、采用URI标识资源 二、采用URI标识资源 三、使
蒋金楠
2018/01/15
1K0
我所理解的RESTful Web API [设计篇]
ASP.NET Core RESTful Web服务开发教程
在本文中,我将逐步解释如何在ASP.NET Core中开发基于RESTful的Web服务应用程序。ASP.NET Core是微软最新发布的技术,比之前的WCF和Web API要好得多。
程序你好
2018/09/29
7.8K0
ASP.NET Core RESTful Web服务开发教程
Restful Web Service(十)
是一种通信方式,可以传递信息,它的特点是 无状态、独立性的(意味着系统做了拆分?)
高大北
2022/06/14
1910
基于RESTful的FastAPI服务模板
FastAPI 是一个高性能 Web 框架,也是一个Python包,用于构建 API,适合利用极少的代码搭建服务器后端,实现前后端分离。
里克贝斯
2021/05/21
7700
基于RESTful的FastAPI服务模板

相似问题

如何通过javascript从html页面调用RESTful web服务的函数

11

来自IOS上的html的RESTFul web服务

24

RESTful web服务url html vs json

34

RESTful web服务

30

RESTful web服务

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文