• 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

  • 相关阅读:
    洛谷P1661 扩散
    Vijos1056 图形面积
    Python爬取猪肉价格网并获取Json数据
    C#中巧用Lambda表达式实现对象list进行截取
    Winform中在ZedGraph中最多可以添加多少条曲线
    Nginx配置实例-动静分离实例:搭建静态资源服务器
    解决pip使用异常No module named 'pip'
    C#在循环中使用Random时生成的随机数相同的解决办法
    Winform中自定义ZedGraph右键复制成功后的提示
    C#中巧用Lambda进行数据的筛选查询等处理
  • 原文地址:https://www.cnblogs.com/caiyishuai/p/13270961.html
Copyright © 2020-2023  润新知