正确理解scipy中的coo_matrix函数
正确理解scipy中的coo_matrix函数
- 1. 构造一个空矩阵
- 2. 使用ijv(triplet)格式构造一个矩阵
- 3. 用重复的索引构造矩阵
1. 构造一个空矩阵
这种用法比较简单,直接生成一个给定维度的矩阵,并且可以指定元素类型。
如下指定生成一个(3,4)
且数据类型为int8
的矩阵
import scipy.sparse as sp
sp.coo_matrix((3, 4), dtype=np.int8).toarray()output:
array([[0, 0, 0, 0],[0, 0, 0, 0],[0, 0, 0, 0]], dtype=int8)
2. 使用ijv(triplet)格式构造一个矩阵
- data[:] 就是原始矩阵中的数据,例如上面的4,5,7,9;
- i[:] 就是行的指示符号;例如上面row的第0个元素是0,就代表data中第一个数据在第0行;
- j[:] 就是列的指示符号;例如上面col的第0个元素是0,就代表data中第一个数据在第0列;
data中的数据刚好存在如下关系:
4:第0行第0列
5:第3行第3列
7:第1行第1列
9:第0行第2列
然后其余元素全部填充为0
row = np.array([0, 3, 1, 0])
col = np.array([0, 3, 1, 2])
data = np.array([4, 5, 7, 9])
coo_matrix((data, (row, col)), shape=(4, 4)).toarray()output:
array([[4, 0, 9, 0],[0, 7, 0, 0],[0, 0, 0, 0],[0, 0, 0, 5]])
3. 用重复的索引构造矩阵
第三种看文档我当时看了半天,泪崩~
怎么理解呢?如下:
同样,data中的元素仍然是作为数据,row和col仍然构成数据在矩阵中的下标。
重复咋整啊???
看到反复提到duplicate
还有summed
关键字的注释,大概就懂了。
也就是说如果row和col仍然构成数据在矩阵中的下标出现了重复情况,那么直接把这些下标下的value进行叠加,最终的和放入该位置即可。
例如:
data中的第一个元素为1,对应的row和col为(0,0),故存放在第0行第0列位置
...
data中的第6个元素为1,对应的row和col为(0,0),故存放在第0行第0列位置
data中的第7个元素为1,对应的row和col为(0,0),故存放在第0行第0列位置
按照规则,直接进行累加:1+1+1 = 3
所以最终第0行第0列存放元素为3
以此类推...
# Constructing a matrix with duplicate indices
row = np.array([0, 0, 1, 3, 1, 0, 0])
col = np.array([0, 2, 1, 3, 1, 0, 0])
data = np.array([1, 1, 1, 1, 1, 1, 1])
coo = sp.coo_matrix((data, (row, col)), shape=(4, 4))
# Duplicate indices are maintained until implicitly or explicitly summed
np.max(coo.data)
coo.toarray()output:
array([[3, 0, 1, 0],[0, 2, 0, 0],[0, 0, 0, 0],[0, 0, 0, 1]])
更多细节可以查看coo_matrix函数
当然,以上仅为个人参照官方文档的一点总结,可能个人说的会存在不好的地方。
大家可以在留言中call我,我会积极探讨,相互进步。
正确理解scipy中的coo_matrix函数相关推荐
- 理解javascript中的回调函数(callback)【转】
在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String.Array.Number.Object类的对象一样用于内置对象的管理.因为function实 ...
- python的上下文管理用哪个关键字_正确理解python中的关键字“with”与上下文管理器...
正确理解python中的关键字"with"与上下文管理器 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: 正确理解python中的关键字&quo ...
- 理解javascript中的回调函数(callback)
理解javascript中的回调函数(callback) 在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String.Array.Number.Obje ...
- 正确理解WPF中的TemplatedParent
原文:正确理解WPF中的TemplatedParent http://www.cnblogs.com/mgen/archive/2011/08/31/2160581.html (注:Logical T ...
- matlab计算正负零序分量,5分钟教你正确理解电力系统中的正序负序零序.doc
5分钟教你正确理解电力系统中的正序负序零序 电力 三相不平衡 作图法 对称分量法 1:三相不平衡的的电压(或电流),可以分解为平衡的正序.负序和零序 2:零序为3相电压向量相加,除以3 3:正序将BC ...
- scipy 中的whiten函数
调用kmeans函数,kmeans中调用了whited函数.查后,发现whiten是对输入数据按标准差做归一化处理. variance=Σi=1n(xi−xmean)2nvariance = \fra ...
- 匿名函数php作用,深入理解PHP中的匿名函数
匿名函数的作用就是扩大函数的使用功能,在PHP(PHP培训 php教程 ) 5.3以前,传递Callback的方式,我们只有俩种选择: ◆字符串的函数名 ◆使用create_function的返回 在 ...
- php中empty功能,深入理解PHP中的 empty()函数
这篇文章主要介绍了PHP中的 empty()函数,有一定的参考价值,感兴趣的朋友可以参考一下,希望对你有所帮助! 从表面上看,很容易误解empty()函数是判断字符串是否为空的函数,其实并不是,我也因 ...
- 2.如何正确理解古典概率中的条件概率《zobol的考研概率论教程》
写本文主要是帮助粉丝理解考研中的古典概率-条件概率的具体定义. "B事件发生的条件下,A事件发生的概率"? "在A集合内有多少B的样本点"? "在B约 ...
最新文章
- c#_String.Split 方法进阶篇
- Oracle常用系统表
- SAP的标准对话框函数
- web项目的创建和发布
- @ResponseBody ResponseEntity
- linux fall delay 10,Cell的Rise delay和Fall delay、Rise transition和fall transition
- STL之修改集合里边元素的顺序
- Python列表常用函数使用详解(内附详细案例)
- mysql 高并发 卡死,高并发中的卡死状态 -HashMap
- python高斯核函数_python 实现高斯核与卷积过程
- 如何更改微信标签名字_微信标签怎么设置?微信怎么批量设置好友标签?
- java数据结构与算法之顺序表与链表深入分析
- linux uac 设备,USB Audio Class (UAC) 分析
- 虹软人证核验增值版-node.js调用C++SDK
- 探索多层次内存系统的页面管理设计空间Exploring the Design Space of Page Management for Multi-Tiered Memory Systems
- 一线大厂php高级面试题_高级php面试题总结分享
- socket是什么?套接字是什么?
- Glide.Placeholder(loadingImage) 之后 Glide 载图片不显示问题
- 中国高科技企业在忙什么(聚焦)
- leslie模型matlab代码6,leslie模型人口预测程序,请求大家!