Python scipy.sparse矩阵使用方法

本文以csr_matrix为例来说明sparse矩阵的使用方法,其他类型的sparse矩阵可以参考https://docs.scipy.org/doc/scipy/reference/sparse.html

csr_matrix是Compressed Sparse Row matrix的缩写组合,下面介绍其两种初始化方法

csr_matrix((data, (row_ind, col_ind)), [shape=(M, N)])

  where datarow_ind and col_ind satisfy the relationship a[row_ind[k], col_ind[k]] = data[k].

csr_matrix((data, indices, indptr), [shape=(M, N)])

  is the standard CSR representation where the column indices for row i are stored in indices[indptr[i]:indptr[i+1]] and their corresponding values are             stored in data[indptr[i]:indptr[i+1]]. If the shape parameter is not supplied, the matrix dimensions are inferred from the index arrays.

上述官方文档给出了:稀疏矩阵的参数及其含义、稀疏矩阵的构造方式。阐述形式简单明了,读起来令人赏心悦目。

Sparse matrices can be used in arithmetic operations: they support addition, subtraction, multiplication, division, and matrix power

Advantages of the CSR format

  • efficient arithmetic operations CSR + CSR, CSR * CSR, etc.
  • efficient row slicing
  • fast matrix vector products

Disadvantages of the CSR format

  • slow column slicing operations (consider CSC)
  • changes to the sparsity structure are expensive (consider LIL or DOK)

上述官方文档时稀疏矩阵的一些特性以及csr_matrix的优缺点,并且在指明各种缺点的同时,提供了可以考虑的技术实现。

代码示例1

import numpy as np
from scipy.sparse import csr_matrix

row = np.array([0, 0, 1, 2, 2, 2])
col = np.array([0, 2, 2, 0, 1, 2])
data = np.array([1, 2, 3, 4, 5, 6])
a = csr_matrix((data, (row, col)), shape=(3, 3)).toarray()

print(a)

运行结果:

array([[1, 0, 2],
       [0, 0, 3],
       [4, 5, 6]])

代码示例2

indptr = np.array([0, 2, 3, 6])
indices = np.array([0, 2, 2, 0, 1, 2])
data = np.array([1, 2, 3, 4, 5, 6])
a = csr_matrix((data, indices, indptr), shape=(3, 3)).toarray()

print(a)

允许结果:

array([[1, 0, 2],
       [0, 0, 3],
       [4, 5, 6]])

上述两个代码示例也是摘自官方文档,表明了每种初始化方式的简单实现,给应用这种初始化方式的人很大启发。

总结:官方文档其实是很好的书写程序文档范例,欣赏她,模仿她,然后在实际中应用她...

时间: 2024-08-10 02:33:29

Python scipy.sparse矩阵使用方法的相关文章

Python SciPy Sparse模块学习笔记

1. sparse模块的官方document地址:http://docs.scipy.org/doc/scipy/reference/sparse.html 2. sparse matrix的存储形式有很多种,见此帖子http://blog.csdn.net/anshan1984/article/details/8580952 不同的存储形式在sparse模块中对应如下: bsr_matrix(arg1[, shape, dtype, copy, blocksize]) Block Sparse

python稀疏矩阵得到每列最大k项的值,对list内为类对象的排序(scipy.sparse.csr.csr_matrix)

print(train_set.tdm) print(type(train_set.tdm)) 输出得到: (0, 3200) 0.264940780338 (0, 1682) 0.356545827856 (0, 3875) 0.404535449364 (0, 2638) 0.375094236628 (0, 2643) 0.420086333071 (0, 558) 0.332314202381 (0, 2383) 0.215711023304 (0, 3233) 0.3048846436

Python机器视觉编程环境搭建方法

Python机器视觉编程环境搭建方法 1. Why Python C/C++ 早期的计算机视觉领域大多数程序都是用C/C++编写.随着计算机硬件速度越来越快,开源平台越来越多,开发者选择计算机视觉算法的实现语言变得更加灵活,代码编写的效率和易用性成为选择编写语言时的考虑因素,而不再仅仅只考虑执行效率. Python Python的跨平台.开放性.易用性,加之丰富的资源使其成为近年来越来越多开发者的选择.国外出版了大量的Python编程.学习书籍,亚马逊搜索Python图书,结果列表长达100页共

SciPy - sparse module

http://blog.csdn.net/pipisorry/article/details/41762945 一.Sparse Matrix Storage Formats 对于很多元素为零的稀疏矩阵,仅存储非零元素可使矩阵操作效率更高. 现有许多种稀疏矩阵的存储方式,但是多数采用相同的基本技术,即存储矩阵所有的非零元素到一个线性数组中,并提供辅助数组来描述原数组中非零元素的位置. 1. Coordinate Format (COO) 这种存储方式的主要优点是灵活.简单.仅存储非零元素以及每个

python小白之矩阵matrix笔记(updating)

Matrix #python学习之矩阵matrix 2018.4.18 # -*- coding: UTF-8 -*- from numpy import * import numpy as np import math a=np.matrix('1 2 7;3 4 8;5 6 9')#矩阵的换行必须使用分号隔开,内部数据必须为字符串形式,元素之间必须以空格隔开 print(np.matrix([[1,2],[3,4]])) m=np.asmatrix(a)#将输入的a解释为矩阵m,并修改m中某

python常用数据类型内置方法介绍

熟练掌握python常用数据类型内置方法是每个初学者必须具备的内功. 一.整型 a = 100 a.xxx() class int(object): def bit_length(self): ##如果将某个整数用2进制表示,返回这个2进制所占bit位数. return 0 def conjugate(self, *args, **kwargs): ##共轭复数 @classmethod # known case def from_bytes(cls, bytes, byteorder, *ar

python 的__del__删除器方法

遇到了python关于del的小问题,又引发了一些问题,就简单的记录下,如果有不同意见,欢迎一起讨论~ python类似java是有垃圾回收机制的语言,所以我们不需要像c++一样通过析构函数来手动释放内存, 但是python也同样提供了__del__释放方法.当一个对象的引用计数为0时,会被自动调用,那么先来说说 引用计数吧. 1.引用计数 #!/usr/bin/env python #coding:UTF-8 import sys class MyClass(object): def __in

【机器学习算法-python实现】矩阵去噪以及归一化

1.背景 项目需要,打算用python实现矩阵的去噪和归一化.用numpy这些数学库没有找到很理想的函数,所以一怒之下自己用标准库写了一个去噪和归一化的算法,效率有点低,不过还能用,大家如果有需要可以拿去. (1)去噪算法:根据概率论的知识,如果一组数据服从正态分布,我们设均值是n,方差是v,那么对于每个离散数值有百分之九十二以上的概率会在(n-3*v,n+3*v)的区间内.所以这里的去噪功能主要是实现如果超出了区间就将这个值标记为区间所能容忍最大值. (2)归一化:找到输入队列最大值max,最

python直接生成exe的方法

一.简介 py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序.py2exe已经被用于创建wxPython,Tkinter,Pmw,PyGTK,pygame,win32com client和server,和其它的独立程序.py2exe是发布在开源许可证下的.目前只有python2.x的才有对应版本的.二.安装py2exe 从http://prdownloads.sourc