csr采用按行压缩的方法,将原始的矩阵用三个数组表示:
三个数组的形式有两种
第一种

from scipy.sparse import *row =  [0,0,0,1,1,1,2,2,2]#行索引
col =  [0,1,2,0,1,2,0,1,2]#列索引
data = [1,0,1,0,1,1,1,1,0]#对应值
t = csr_matrix((data,(row,col)),shape=(3,3))
print(t)
print(t.todense())
>>(0, 0)  1(0, 1) 0(0, 2) 1(1, 0) 0(1, 1) 1(1, 2) 1(2, 0) 1(2, 1) 1(2, 2) 0
[[1 0 1][0 1 1][1 1 0]]

这种是比较好理解的,每个数组分别代表行索引、列索引和对应的值
csr_matrix矩阵用法小节
第二种

from scipy import sparse
data = np.array([1, 2, 3, 4, 5, 6])         #所有的非零数值
indices = np.array([0, 2, 2, 0, 1, 2])      #所有值得列索引
indptr = np.array([0, 2, 3, 6])             #每行的的非零数据 data[i:i+1]
mtx = sparse.csr_matrix((data,indices,indptr),shape=(3,3))
mtx.todense()

比较难理解的是indptr,indptr每个值是每行中一个值得索引,我们用indptr[0]:indptr[1]取第一行对应的data的索引,即data[indptr[0]:indptr[1]]为第一行对应的值,再根据列索引即可确定值的位置。
如何理解sparse.csr_matrix

利用csr矩阵做计算貌似是更有效的,item协同过滤矩阵的乘法也是采用csr_matrix

# 将word映射为iddocuments_as_ids = [np.sort([word_to_id[w] for w in doc if w in word_to_id]).astype('uint32') for doc in documents]# row_ind为所有单词的所在的doc索引,col_ind为所有单词在该doc的索引row_ind, col_ind = zip(*itertools.chain(*[[(i, w) for w in doc] for i, doc in enumerate(documents_as_ids)]))data = np.ones(len(row_ind), dtype='uint32')  # use unsigned int for better memory utilizationmax_word_id = max(itertools.chain(*documents_as_ids)) + 1docs_words_matrix = csr_matrix((data, (row_ind, col_ind)), shape=(len(documents_as_ids), max_word_id))  # efficient arithmetic operations with CSR * CSRwords_cooc_matrix = docs_words_matrix.T * docs_words_matrix  # multiplying docs_words_matrix with its transpose matrix would generate the co-occurences matrixwords_cooc_matrix.setdiag(0)

csr_matrix矩阵相关推荐

  1. csr_matrix矩阵压缩

    scipy库中的sparse.csr_matrix可对稀疏的np.array进行压缩处理,有两种方式:csr(Compressed Sparse Row marix) 和 csc(Compressed ...

  2. csr_matrix矩阵用法小结

    https://blog.csdn.net/qq_41853536/article/details/83345273

  3. scipy.sparse、pandas.sparse、sklearn稀疏矩阵的使用

    单机环境下,如果特征较为稀疏且矩阵较大,那么就会出现内存问题,如果不上分布式 + 不用Mars/Dask/CuPy等工具,那么稀疏矩阵就是一条比较容易实现的路. 文章目录 1 scipy.sparse ...

  4. 微服务架构带来的分布式单体,更好还是更坏,一念之间

    前言 微服务架构其实是为了服务可以独立的开发.独立的部署,快速迭代,并且技术多样性. 然而我们经常在开发微服务的时候没有弄清楚微服务的边界,导致了一个更大的坑,由单体架构拆分成了微服务单体架构,带来了 ...

  5. python矩阵处理库_用于处理非常大的矩阵的Python库

    什么是用于处理非常大的矩阵(例如数百万行/列)的优秀 Python库,包括在矩阵生命的任何阶段添加行或列的能力? 我查看过pytables和h5py,但是一旦创建了矩阵,它们都不支持添加或删除行或列. ...

  6. scipy.sparse.coo_matrix、csr_matrix、lil_matrix、dia_matrix

    文章目录 coo_matrix csr_matrix lil_matrix dia_matrix coo_matrix 1.coo啥意思?COOrdinate(坐标) 2.那么coo_matrix又是 ...

  7. python怎么定义空矩阵_python 空矩阵

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 稀疏矩阵不必以标准矩阵形式表示. 有很多方法可以缓解这种标准形式给我们的计算系统 ...

  8. python建立空矩阵_SciPy创建稀疏矩阵

    3. SciPy创建稀疏矩阵 严格意义上讲ndarray数据类型应属数组而非矩阵,而matrix才是矩阵,这个在NumPy创建matrix一章里有讲述,是最基本的矩阵matrix创建方法,忘记了可以回 ...

  9. python numpy矩阵索引_python-为什么scipy csr矩阵的行索引比numpy数组...

    我在下面演示的简短答案是,构造新的稀疏矩阵非常昂贵.开销很大,不依赖于行数或特定行中非零元素的数量. 稀疏矩阵的数据表示形式与密集阵列的数据表示形式完全不同.数组将数据存储在一个连续的缓冲区中,并有效 ...

最新文章

  1. 掌握房贷技巧可让你少奋斗十年(收藏)
  2. 机器学习第7天:深入了解逻辑回归
  3. 【Python 爬虫】 2、HTTP基本原理
  4. 当session失效后,无论点击那个页面,都找到顶端页面,跳到登录页面。
  5. java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection 解决
  6. python画条形图-Python数据可视化:基于matplotlib绘制「条形图」
  7. 华为自带时钟天气下载_华为手机锁屏时钟软件
  8. android m3u8合成ts,M3U8-TS文件合并为MP4文件
  9. [TF进阶] 循环神经网络
  10. 最近游戏更新 未整理 无图片 续3
  11. 政务内网、政务外网、政务专网
  12. CentOS实现双网卡网络共享
  13. 依赖多个项目,重复jar包不同版本冲突解决
  14. 小小摩尔福斯之网络侦探
  15. 3D仿真教程:ThingJS全套环境搭建方案
  16. java按照多个分隔符分割字符串
  17. java计算机毕业设计康养旅游信息系统源程序+mysql+系统+lw文档+远程调试
  18. 1502: [NOI2005]月下柠檬树
  19. 回调函数举例ajax,通过回调函数的理解来进一步理解ajax及其注意的用法
  20. 12个降维技术的终极指南(使用Python代码)

热门文章

  1. win10右键一直转圈_惠普产品拆机图文哪里找?桌面点右键延迟咋办?内存怎么少了?...
  2. matlab怎么建立一元线性回归方程,请问用MATLAB做一元非线性回归拟合,怎么做显著性检验呢?...
  3. 图像mnf正变换_最小噪声分离(MNF)
  4. Hadoop之电信日志数据处理(一)------业务简介
  5. 【tool】动态注释LOG_NDEBUG宏定义
  6. BBUCTF消失的MD5题解
  7. 2022-09-16 蒟蒻の模拟赛之Summary
  8. XUPT-ACM校赛心得
  9. win8.1服务器系统安装教程,win8.1安装iis图文教程
  10. linux交互式进程初始化失败怎么办,电脑进入安全方式仍然显示交互式登录进程初始化失败...