1.生成随机稀疏矩阵:
scipy中生成随机稀疏矩阵的函数如下:
scipy.sparse.rand(m,n,density,format,dtype,random_state)
参数介绍:
参数 | 含义 |
---|---|
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