Scipy中的稀疏矩阵的编码方式
import numpy as np
from scipy import sparse
(1)COO( Coordinate)
最直观的就是COO格式。它用了1维的数组来表示2维的矩阵,每个数组的长度与稀疏矩阵A的非零数字个数一样,它们的组合(i,j)组成了非零数字在稀疏矩阵中的坐标。
row,col数组,组合起来指明非零数字在稀疏矩阵中的坐标/定位。data数组,指定了非零数字是哪些
s=np.array([[4,0,3],
[0,32,0]]);s
array([[ 4, 0, 3],
[ 0, 32, 0]])
为表示 s,我们这样做:
data=np.array([4,3,32])
row=np.array([0,0,1])
col=np.array([0,2,1])
s_coo=scipy.sparse.coo_matrix((data,(row,col)))
.toarray()方法返回一个numpy数组来表示稀疏矩阵,我们用这个方法来检查下s_coo是否创建对了:
s_coo.toarray()
array([[ 4, 0, 3],
[ 0, 32, 0]])
同样我们可以用.A属性,但实际是调用了一个方法。但推荐用toarray()。
(2)CSR 格式(Compressed Sparse Row)
COO格式虽然直观,但是不够精简,毕竟对于同一行/同一列的非零数字,我们重复的多用了row/column。因此,我们可以“压缩”行数,即只要表示出列数是从哪行到哪行就可以定位出非零数字的位置,而不用重复的写出来每一个非零数字的行数。这就是CSR的意思。
首先看一个COO的例子:
row=[0,1,1,1,1,2,3,4,4]
col=[2,0,1,3,4,1,0,3,4]
data=np.array([6,1,2,4,5,1,9,6,7])
ss=sparse.coo_matrix((data,(row,col)))
ss.toarray()
array([[0, 0, 6, 0, 0],
[1, 2, 0, 4, 5],
[0, 1, 0, 0, 0],
[9, 0, 0, 0, 0],
[0, 0, 0, 6, 7]])
现在用CRS格式,row换成indptr,indptr=[0,1,5,6,7,9],即表示col[0,1)在第一行,即6在第一行第2列;col[1,5)在第二行,即1,2,4,5在第二行的第0,1,3,4列,等等
indptr=[0,1,5,6,7,9]
csr=sparse.csr_matrix((data,col,indptr))
csr.toarray()
array([[0, 0, 6, 0, 0],
[1, 2, 0, 4, 5],
[0, 1, 0, 0, 0],
[9, 0, 0, 0, 0],
[0, 0, 0, 6, 7]])
(3)CSC(Compressed Sparse Column)
与CSR类似,但压缩的是列,data中的数字按列排列,不再赘述。
Scipy中的稀疏矩阵的编码方式的更多相关文章
- eclipse中设置项目的编码方式
1.windows->Preferences...打开"首选项"对话框,左侧导航树,导航到general->Workspace,右侧Text file encoding ...
- Redis中存入存储的编码方式不一致解决问题
在利用redis缓存的时候,存入的数据与取出的数据编码方式不一致解决办法. from redis import StrictRedis #ecoding = 'utf-8',默认解码方式为bytes, ...
- 修改MySQL数据库中表和表中字段的编码方式的方法
今天向MySQL数据库中的一张表添加含有中文的数据,可是老是出异常,检查程序并没有发现错误,无奈呀,后来重新检查这张表发现表的编码方式为latin1并且原想可以插入中文的字段的编码方式也是latin1 ...
- Python中的幽灵—编码方式
首先要搞懂本地操作系统编码与系统编码的区别: 本地操作系统编码方式与操作系统有关,Linux默认编码方式为utf-8,Windows默认编码方式为gbk: 系统编码方式与编译器or解释器有关,Pyth ...
- 刨根究底字符编码之十一——UTF-8编码方式与字节序标记
UTF-8编码方式与字节序标记 一.UTF-8编码方式 1. 接下来将分别介绍Unicode字符集的三种编码方式:UTF-8.UTF-16.UTF-32.这里先介绍应用最为广泛的UTF-8. 为满足基 ...
- vim 编码方式的设置
和所有的流行文本编辑器一样,Vim 可以很好的编辑各种字符编码的文件,这当然包括UCS-2.UTF-8 等流行的 Unicode 编码方式.然而不幸的是,和很多来自 Linux 世界的软件一样,这需要 ...
- iOS 中使用Base64编码方式编码图片数据
最近一个项目要求对图片数据简单加密下,就是那种不能直接看到图片内容就行.于是我使用了base64编码对图片数据进行编码,把图片2进制数据变成了base64的字符串,再把这个字符串保存到server的数 ...
- JS 和 Java 中URL特殊字符编码方式
前几天遇到url特殊字符编码的问题,在这里整理一下: JavaScript 1. 编码 escape(String) 其中某些字符被替换成了十六进制的转义序列. 解码 unescape(String ...
- java中的字符编码方式
1. 问题由来 面试的时候被问到了各种编码方式的区别,结果一脸懵逼,这个地方集中学习一下. 2. 几种字符编码的方式 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符 ...
- JAVA中默认的编码方式
转:http://blog.csdn.net/scyatcs/article/details/31356823 编码问题存在两个方面:JVM之内和JVM之外.1.Java文件编译后形成class这里J ...
随机推荐
- Typecho 博客文章评论添加显示 UserAgent(UA)的功能
本篇文章实现了为 Typecho 博客文章评论添加显示 UserAgent(UA)的功能 本功能可替代 UserAgent 插件,更美观.简洁且好看 效果显示 大概就是这样了,实际效果请看我的评论! ...
- 启动Eclipse时报错如何解决?
启动Eclipse出现弹框,弹框报错内容如下: A Java Runtime Enviroment(JRE)or Java Development Kit(JDK) must be available ...
- try catch异常捕获工具类
异常捕获工具类 package com.example.multiThreadTransaction_demo.utils; import lombok.extern.slf4j.Slf4j; imp ...
- MSBuild属性
MSBuild 属性 MSBuild属性是键值对的集合,提前声明好这些属性之后,整个项目的生成都可以引用这些属性. 属性名不区分大小写. 属性都是写在 PropertyGroup 标签中. 1.声明属 ...
- webpack 科学修改 node_modules 某个包的部分文件为本地文件
需求总是千变万化,npm 不是万能的,node_modules 里面的文件也是需要维护的. 如果 npm install 安装了某个包,然而这个包里面部分文件不支持你的需求,这时候怎么办? 比如:ht ...
- 使用watch指令实时监控nvidia显卡状态
当你在训练模型等需要实时检查英伟达显卡状态的时候,使用watch是很好的解决方案 相较于传统的nvidia-smi -l 1指令实时查看的显示效果不好看,watch可以标记处更新的部分,并且是动态刷新 ...
- Golang Linux、Windows、Mac 下交叉编译
前言 Golang 支持交叉编译, 即同一份代码,在一个平台上生成,然后可以在另外一个平台去执行. 之前写过一篇 Golang windows下 交叉编译 感觉写的不够全面,这篇作为补充. 交叉编译 ...
- 0003 Failed to build the application: build go_beego/src/hello: cannot load
我使用beego框架快速建立了一个应用,可当我运行 bee run的时候,出现了如下错误 D:\go_beego\src\product>bee run ______ | ___ \ | |_/ ...
- selenium自动化测试-获取网页截图
今天学习下使用selenium自动化测试工具获取网页截图. 1,如果是简单获取当前屏幕截图只需要使用方法: driver.get_screenshot_as_file('screenshot.png' ...
- 【Vue3】下载zip文件损坏的问题
需求: 需要在vue3上实现Asp.net Web API 下载zip包的功能,本身需求很简单,但是中间遇到了问题,记录一下. 问题: 下载的zip包和后端的zip包大小不一致,后端生成的zip 61 ...