稀疏矩阵coo_matrix的乘法
稀疏矩阵的乘法在做基于n-gram的分类的时候还是相当有用的,但是由于网上资料太少,所以折腾了几天才算折腾出来。
首先scipy包里常见的稀疏矩阵有三种形式, coo_matrix, csr_matrix, csc_matrix.
coo_matrix: A sparse matrix in COOrdinate format.
csc_matrix: Compressed Sparse Column matrix
csr_matrix: Compressed Sparse Row matrix
基本上csr和csc的乘法都和coo差不多,理解coo的乘法即可
网上讲解coo矩阵乘法的有这样一篇文章:
http://www.mathcs.emory.edu/~cheung/Courses/561/Syllabus/3-C/sparse.html
但是他的解法应该是错的,正确的应该是
Val[N]: contains the value of the non-zero elements
Row[N]: contains the row-index of the non-zero elements
Col[N]: contains the column -index of the non-zero elements
Result保存结果
for (k = 0; k < N; k = k + 1)
result[i] = 0;
for (k = 0; k < nnz; k = k + 1)
result[Col[k]] = result[Col[k]] + Val[k]*d[Row[k]];
上代码证明:
import numpy as np
from scipy import sparse
row = np.array([0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 5, 5, 5, 6, 6, 6, 7, 7])
col = np.array([0, 1, 3, 1, 2, 4, 0, 2, 3, 1, 4, 5, 4, 4, 5, 6, 4, 6, 7, 6, 7])
data = np.array([11, 12, 14, 22, 23, 25, 31, 33, 34, 42, 45, 46, 55, 65, 66, 67, 75, 77, 78, 87, 88])
mtx = sparse.csc_matrix((data, (row,col)), shape=(8, 8))
val = np.array([1, 0, 0, 0, 0, 0, 0, 0])
results = np.zeros(8, dtype=np.int8)
k = 0
while k<len(data):
results[col[k]] = results[col[k]] + data[k]*val[row[k]]
k = k + 1
a = val * mtx
print a
print reults
稀疏矩阵coo_matrix的乘法的更多相关文章
- scipy.sparse 稀疏矩阵
from 博客园(华夏35度)http://www.cnblogs.com/zhangchaoyang 作者:Orisun 本文主要围绕scipy中的稀疏矩阵展开,也会介绍几种scipy之外的稀疏矩阵 ...
- GPU上稀疏矩阵的基本线性代数
GPU上稀疏矩阵的基本线性代数 cuSPARSE库为稀疏矩阵提供了GPU加速的基本线性代数子例程,这些子例程的执行速度明显快于仅CPU替代方法.提供了可用于构建GPU加速求解器的功能.cuSPARSE ...
- python版 mapreduce 矩阵相乘
参考张老师的mapreduce 矩阵相乘. 转载请注明:来自chybot的学习笔记http://i.cnblogs.com/EditPosts.aspx?postid=4541939 下面是我用pyt ...
- 7、c++版,在大学学的编程基础知识
1.各种排序 #include<iostream> using namespace std; //-------直接插入排序 void InsertSort(ElemType A[],in ...
- cuSPARSELt开发NVIDIA Ampere结构化稀疏性
cuSPARSELt开发NVIDIA Ampere结构化稀疏性 深度神经网络在各种领域(例如计算机视觉,语音识别和自然语言处理)中均具有出色的性能.处理这些神经网络所需的计算能力正在迅速提高,因此有效 ...
- poj 3735 Training little cats 矩阵快速幂+稀疏矩阵乘法优化
题目链接 题意:有n个猫,开始的时候每个猫都没有坚果,进行k次操作,g x表示给第x个猫一个坚果,e x表示第x个猫吃掉所有坚果,s x y表示第x个猫和第y个猫交换所有坚果,将k次操作重复进行m轮, ...
- 稀疏矩阵乘法加法等的java实现
原创声明:本文系作者原创,转载请写明出处. 一.前言 前几天由于科研需要,一直在搞矩阵的稀疏表示的乘法,不过最近虽然把程序写出来了,还是无法处理大规模的矩阵(虽然已经是稀疏了).原因可能是 ...
- 稀疏矩阵乘法 · Sparse Matrix Multiplication
[抄题]: 给定两个 稀疏矩阵 A 和 B,返回AB的结果.您可以假设A的列数等于B的行数. [暴力解法]: 时间分析: 空间分析: [思维问题]: [一句话思路]: 如果为零则不相乘,优化常数的复杂 ...
- python 多线程稀疏矩阵乘法
import threading, time import numpy as np res = [] class MyThread(threading.Thread): def __init__(se ...
随机推荐
- e+开发中的各种问题
1.数据交换后走的查询公式还是controller所配置的公式
- jQuery 快速入门教程
内容目录 jQuery 入门 什么是jQuery 如何使用jQuery jQuery的运行原理 如何选择jQuery版本 ready() 准备就绪时执行代码 jQuery 核心:选取元素 使用jQue ...
- 收藏一个匹配html内容的文章
http://blog.csdn.net/donglynn/article/details/35788879
- php版网易视频云api
最近在做在线教育课程,使用网易云视频作为在线视频直播. 网易官方只有java示例,我们使用php,就自己写个api. 当然实现也是很简单的. 演示:http://www.deitui.com/inde ...
- ubuntu apt-get
近期重新拿起linux的书看了下,整理了一下linux的命令. ubuntu预装了APT和dpkg ,“APT”是 “Advanced Package Tool”的简写,“dpkg ”是“Debian ...
- php最短的HTTP响应代码
刚刚发现在CodeProject给我推送了一篇文章叫:the Shortest PHP code for Returning HTTP Response Code 翻译过来就是(PHP最短的HTTP ...
- 安装pip之后,执行pip,提示:unknown or unsupported command install
安装pip之后,在dos命令框中输入pip,提示:unknown or unsupported command install,搜索之后,立马在:http://stackoverflow.com/qu ...
- Js 简单分页(二)
此次使用了http://www.purecss.org/ 的前端Css 效果图 上代码 //更新分页工具栏的效果展示 function updatepagetoolshow(){ //判断当前页 及 ...
- Dom学习笔记-(一)
一.概述 DOM(文档对象模型)是针对HTML和XML文档的一个API,其脱胎于DHTML. DOM可以将任意HTML和XML文档描绘成一个由多层节点构成的结构. 每一个文档包含一个根节点-文档节点, ...
- ubuntu13.10 登陆后黑屏,没有菜单栏,可以启动termina,怎么解决?
最近在学习openGL,自己的电脑是intel集显加nvidia GT630M,本来想应该可以支持到opengl4以上的,可是发现nvidia的显卡由于驱动问题,好像一直没有用到,所以只支持了open ...