python中scipy学习——随机稀疏矩阵及操作

Posted 蔡军帅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中scipy学习——随机稀疏矩阵及操作相关的知识,希望对你有一定的参考价值。

1.生成随机稀疏矩阵

scipy中生成随机稀疏矩阵的函数如下:

scipy.sparse.rand(m,n,density,format,dtype,random_state)
  • 1

参数介绍:

参数含义
m,n 整型;表示矩阵的行和列
density 实数类型;表示矩阵的稀疏度
format str类型;表示矩阵的类型;如format=‘coo’
dtype dtype;表示返回矩阵值的类型
ranom_state {numpy.random.RandomState,int};可选的随机种子;如果空缺,默认numpy.random

例子

代码如下:

import scipy as spy

n=4
m=4
density=0.5
matrixformat=coo
B=spy.sparse.rand(m,n,density=density,format=matrixformat,dtype=None)
print(B)

>>>
 (1, 1)        0.0687198939788

  (3, 3)        0.141328654998

  (0, 3)        0.944468193258

  (2, 3)        0.598652789611

  (0, 2)        0.0629165518906

  (2, 0)        0.624087894456

  (1, 2)        0.309460820898

  (2, 2)        0.731375305002

2.稀疏矩阵的操作:

import scipy as spy

n=4
m=4
row=spy.array([0,0,0,1,1,3,3])
col=spy.array([0,0,1,2,3,2,3])
value=spy.array([1,2,1,8,1,3,5])
print(自定义生成一个csc格式的稀疏矩阵..)#‘coo‘格式的矩阵无法进行以下某些操作
A=spy.sparse.csc_matrix((value,(row,col)),shape=(n,m))
print(稀疏矩阵的非稀疏表示形式...)
print(A.todense())
print(稀疏矩阵的非零元素对应坐标...)
nonzero=A.nonzero()
print(nonzero)
print(输出非零元素对应的行坐标和列坐标...)
print(nonzero[0])
print(nonzero[1])
print(输出第i行非零值...)
i=2
print(A[i,:])
print(输出第j列非零值...)
j=2
print(A[:,j])
print(输出坐标为(i,j)对应的值...)
print(A[i,j])

输出结果如下:

自定义生成一个csc格式的稀疏矩阵..
稀疏矩阵的非稀疏表示形式...
[[3 1 0 0]
 [0 0 8 1]
 [0 0 0 0]
 [0 0 3 5]]
稀疏矩阵的非零元素对应坐标...
(array([0, 0, 1, 1, 3, 3], dtype=int32), array([0, 1, 2, 3, 2, 3], dtype=int32))
输出非零元素对应的行坐标和列坐标...
[0 0 1 1 3 3]
[0 1 2 3 2 3]
输出第i行非零值...

输出第j列非零值...
  (1, 0)        8
  (3, 0)        3
输出坐标为(i,j)对应的值...
0

注:更多参考请查看docs.scipy.org

以上是关于python中scipy学习——随机稀疏矩阵及操作的主要内容,如果未能解决你的问题,请参考以下文章

在Python中创建生成稀疏矩阵(均匀分布高斯分布)

使用 scipy 在 python 中构建和更新稀疏矩阵

计算 scipy 稀疏矩阵的稀疏传递闭包

将 Python 字典列表转换为 SciPy 稀疏矩阵

将稀疏 scipy 矩阵加载到现有的 numpy 密集矩阵中

Python使用scipy包将稀疏矩阵保存为Mtx格式和npz格式文件实战