scipy稀疏数组dok_array的具体使用

 更新时间:2023年02月23日 09:24:56   作者:微小冷  
本文主要介绍了scipy稀疏数组dok_array的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

dok_array

dok数组就是通过键值对存储的数组,其中key就是矩阵中的坐标元组,value就是对应坐标中的值,是最容易理解的稀疏矩阵存储方案。

>>> import numpy as np
>>> from scipy.sparse import dok_array
>>> dok = dok_array((5, 5), dtype=np.float32)
>>> for i in range(5):
...     for j in range(5):
...         dok[i, j] = i + j    # Update element
...
>>> print(dok.toarray())
[[0. 1. 2. 3. 4.]
 [1. 2. 3. 4. 5.]
 [2. 3. 4. 5. 6.]
 [3. 4. 5. 6. 7.]
 [4. 5. 6. 7. 8.]]

得到结果为

从上面的代码来看,其等价形式如下,唯一的区别是,对于一个全0的矩阵,array必须将所有0都存储下来,而dok数组可以不存储任何有效值。但对于全都不是0的矩阵,dok除了存储矩阵的值之外,还要将矩阵的坐标重新写一边,相当于数据量翻了三倍。

>>> Z = np.zeros([5,5])
>>> for i in range(5):
...     for j in range(5):
...         Z[i, j] = i + j    # Update element
...
>>> print(Z)
[[0. 1. 2. 3. 4.]
 [1. 2. 3. 4. 5.]
 [2. 3. 4. 5. 6.]
 [3. 4. 5. 6. 7.]
 [4. 5. 6. 7. 8.]]

初始化方案

dok仅支持三种初始化方案:

  • dok_array(D) D是一个稀疏数组或2 × D 2\times D2×D数组
  • dok_array(S) S是另一种稀疏数组。
  • dok_array((M, N),dtype='d') 创建一个shape为( M , N ) (M, N)(M,N)的空数组,dtype为数据类型

内置方法

稀疏数组在计算上并不便捷,所以dok_array中内置了下列函数,可以高效地完成计算。

函数expm1, log1p, sqrt, pow, sign
三角函数sin, tan, arcsin, arctan, deg2rad, rad2deg
双曲函数sinh, tanh, arcsinh, arctanh
索引getcol, getrow, nonzero, argmax, argmin, max, min
舍入ceil, floor, trunc
变换conj, conjugate, getH
统计count_nonzero, getnnz, mean, sum
矩阵diagonal, trace
获取属性get_shape, getformat
计算比较multiply, dot, maximum, minimum
转换asformat, asfptype, astype, toarray, todense
转换tobsr, tocoo, tocsc, tocsr, todia, todok, tolil
更改维度set_shape, reshape, resize, transpose
排序sort_indices, sorted_indices
移除元素eliminate_zeros, prune, sum_duplicates
其他copy, check_format, getmaxprint, rint, setdiag

到此这篇关于scipy稀疏数组dok_array的具体使用的文章就介绍到这了,更多相关scipy稀疏数组dok_array内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • Python学习之字典和集合的使用详解

    Python学习之字典和集合的使用详解

    Python 中字典和集合也是非常相近的概念,而且从外观看上去,也有那么一丝丝的相似。本文将从字典基本知识入手,为你展开字典类型数据的各个知识点,需要的可以参考一下
    2022-11-11
  • 记录Python脚本的运行日志的方法

    记录Python脚本的运行日志的方法

    这篇文章主要介绍了记录Python脚本的运行日志的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • python中list方法详解

    python中list方法详解

    list 是 Python 中的一种内置数据类型,代表一个可变的有序序列。list 类型的对象可以使用多个方法来操作和修改其中的元素。文中通过代码示例详细介绍了list的常用方法,感兴趣的同学可以参考阅读
    2023-04-04
  • jupyter notebook 添加kernel permission denied的操作

    jupyter notebook 添加kernel permission denied的操作

    这篇文章主要介绍了jupyter notebook 添加kernel permission denied的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python3.7实现中控考勤机自动连接

    Python3.7实现中控考勤机自动连接

    这篇文章主要为大家详细介绍了Python3.7实现中控考勤机自动连接,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • python列表生成器常用迭代器示例详解

    python列表生成器常用迭代器示例详解

    这篇文章主要为大家介绍了python列表生成器常用迭代器示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • GDAL 矢量属性数据修改方式(python)

    GDAL 矢量属性数据修改方式(python)

    这篇文章主要介绍了GDAL 矢量属性数据修改方式(python),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • 从多个tfrecord文件中无限读取文件的例子

    从多个tfrecord文件中无限读取文件的例子

    今天小编就为大家分享一篇从多个tfrecord文件中无限读取文件的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • python操作sqlite的CRUD实例分析

    python操作sqlite的CRUD实例分析

    这篇文章主要介绍了python操作sqlite的CRUD实现方法,涉及Python操作SQLite数据库CURD相关技巧,需要的朋友可以参考下
    2015-05-05
  • matplotlib实战之饼图绘制详解

    matplotlib实战之饼图绘制详解

    饼图,或称饼状图,是一个划分为几个扇形的圆形统计图表,这篇文章主要为大家详细介绍了如何使用Matplotlib绘制饼图,需要的小伙伴可以参考下
    2023-08-08

最新评论