scipy常见数据结构:coo_matrix、csc_matrix与csr_matrix

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scipy常见数据结构:coo_matrix、csc_matrix与csr_matrix相关的知识,希望对你有一定的参考价值。

参考技术A coo_matrix全称是A sparse matrix in COOrdinate format,一种基于坐标格式的稀疏矩阵,每一个矩阵项是一个三元组(行,列,值)。
该矩阵的常见构造方法有如下几种:

输出为:

使用稠密二维数组构造

输出为:
array([[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]], dtype=int8)

输出为:
array([[4, 0, 9, 0],
[0, 7, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 5]])
如果行列坐标有重复,对应的值直接累加,举例如下:

输出为:
array([[3, 0, 1, 0],
[0, 2, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 1]])

csr是Compressed Sparse Row matrix的缩写即压缩稀疏基于行存储的矩阵,好绕口,该矩阵有如下几种构造方法:

输出为:

输出为:
array([[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]], dtype=int8)

输出为:
array([[1, 0, 2],
[0, 0, 3],
[4, 5, 6]])
按行存储,即先存储第0行,然后第1行,依次到最后一行,即先扫描row数组的数据,第一个数据是0即第0行,然后扫描col的第一个数据是0即第0列,那么第0行第0列存储的值就是data的第一个数据即1,然后继续扫描row的第二个数据还是0即还是第0行,col对应的第二个数据是2即第2列,data的第二个数据是2,即第0行第2列的数据是2,依次扫描row,找对应的col和data构造稀疏矩阵。

输出为:
array([[1, 0, 2],
[0, 0, 3],
[4, 5, 6]])

csc是Compressed Sparse Column matrix的缩写即基于列存储的压缩稀疏矩阵,该矩阵有如下几种构造方法:

输出如下:

和前面的csr的输出对比可以看出该矩阵是按列逐个存储。

输出如下:
array([[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]], dtype=int8)

输出如下:
array([[1, 0, 4],
[0, 0, 5],
[2, 3, 6]])

输出如下:
array([[1, 0, 4],
[0, 0, 5],
[2, 3, 6]])

coo_matrix由于构造方便容易理解,所以通常都是先构造该矩阵然后调用tocsr和tocsc函数来获取另外两种矩阵的存储。
csr_matrix支持快速的按行切片,而csc_matrix则支持快速按列切片操作。

python数据分析之numpy+pandas+scipy+matplotlib+scikit-learn安装

摘要

利用python来进行数据分析的时候,需要安装一些常见的工具包,如numpy,pandas,scipy等等,在安装的过程中,经常遇到一些安装细节的问题,如版本不匹配,需要依赖包没有正确安装等等,本文汇总梳理了下几个必要安装包的安装步骤,希望对读者有帮助,环境是windows 64 bit+python2.7.11。

一.安装python2.7.11

进入官网:https://www.python.org/downloads/release/python-2711/

下载如下的连接:

技术分享

下载之后是一个msi安装文件,python-2.7.11.amd64.msi,直接选择目录安装。

安装完之后要设置要python的环境变量,确保在命令行中支持。步骤如下:

右键我的电脑-->属性-->高级-->环境变量-->path

在最后添加python2.7.11安装的目录,如:

技术分享

 

二.升级pip到8.1版本

Python2.7.11版本安装之后默认安装了pip 7.1.2版本,使用如下命令升级到8.1版本:python -m pip install --upgrade pip

出现如下提示代表安装成功:

 技术分享

 

三.安装numpy

到官网下载对应的版本号:

https://pypi.python.org/pypi/numpy/1.10.4

http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy

(ps:官网上面好像找不到比较老的版本,我自己是在CSDN上找到的一个资源包下载的:http://download.csdn.net/download/pleaseandplease/9387857,下载这个包:numpy-1.10.2+mkl-cp27-none-win_amd64.whl )

下载下来放入一个固定目录之后,使用命令pip install numpy*.whl来安装,成功之后结果如下:

技术分享

 

使用pip list也能看到安装之后的版本:

技术分享

 

import使用正常

技术分享

 

四.安装scipy

网上下载对应的whl安装包,如:

scipy-0.15.1-cp27-none-win_amd64.whl

官网上目前只有较新版本的,1.5版本的没有提供,我是在微盘上下载的,连接如下:

http://vdisk.weibo.com/s/Dp2sFMRNcCOI

官网上面的whl包只有较新版本了。

技术分享

 

下载下来之后,参考如上的方式,使用pip来安装,成功的提示如下:

技术分享

 

Pip list也能看到安装的版本

技术分享

 

import使用测试ok

技术分享

 

五.安装matplot

类似如上步骤,下载对应的whl版本,如:

matplotlib-1.5.0-cp27-none-win_amd64.whl

官网上好像也下不了那么老的版本,我是在这个连接上下的:

http://zh.osdn.net/projects/sfnet_matplotlib/downloads/matplotlib/matplotlib-1.5.0/windows/matplotlib-1.5.0-cp27-none-win_amd64.whl/

使用pip install安装,成功之后如下提示:

技术分享

 

安装matplot的时候,会安装一些依赖的包,如dateutil,使用pip list查看发现新增加了很多包:

技术分享

 

使用import来使用ok

>>> import matplotlib.pyplot as plt

>>> plt.plot([1,2,3])

[<matplotlib.lines.Line2D object at 0x00000000079E9BE0>]

>>> plt.show()

 

技术分享

 

六.安装scikit-learn

到官网去下载对应的whl版本,

https://sourceforge.net/projects/scikit-learn/files/?source=navbar

比如用的这个版本:

技术分享

 

使用pip install命令来安装,成功如下:

技术分享

 

Pip list看到安装版本

技术分享

 

使用import来测试ok

技术分享

 

七.安装pandas

去官网http://pandas.pydata.org/找到对应的版本链接

技术分享

 

下载对应的wheel版本:

技术分享

 

使用pip install来安装

技术分享

 

Pip list看到版本

技术分享

 

import 使用正常

技术分享

 

八.所有安装包

 上面所有需要安装的包列表如下:

技术分享

 

以上是关于scipy常见数据结构:coo_matrix、csc_matrix与csr_matrix的主要内容,如果未能解决你的问题,请参考以下文章

深度学习中使用稀疏矩阵

深度学习中使用稀疏矩阵

Coo_matrix和其他矩阵示例

使用scipy.optimize.fmin的常见问题

科学计算工具Numpy

Python scipy.interpolate插值