scipy稀疏数组dok_array如何使用

开发技术 作者:iii 2024-04-22 05:00:01
这篇文章主要介绍“scipy稀疏数组dok_array如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“scipy稀疏数组d...

这篇文章主要介绍“scipy稀疏数组dok_array如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“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.]]

得到结果为

scipy稀疏数组dok_array如何使用

从上面的代码来看,其等价形式如下,唯一的区别是,对于一个全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如何使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注捷杰建站行业资讯频道,小编每天都会为大家更新不同的知识点。

原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_15622.html
scipy