scipy稀疏数组coo_array如何实现

开发技术 作者:iii 2024-04-22 01:40:02
这篇文章主要讲解了“scipy稀疏数组coo_array如何实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“scip...

这篇文章主要讲解了“scipy稀疏数组coo_array如何实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“scipy稀疏数组coo_array如何实现”吧!

coo_array

coo也被称为ijv,是一种三元组格式,对于矩阵中第i ii行第j jj列的值v vv,将其存储为( i , j , v ) (i,j,v)(i,j,v)这样的三元组,即为coo_array的原理。

例如

import numpy as np
from scipy.sparse import coo_array
row  = np.array([0, 3, 1, 0])
col  = np.array([0, 3, 1, 2])
data = np.array([4, 5, 7, 9])
coo_array((data, (row, col)), shape=(4, 4)).toarray()
print(coo.toarray())

其输出结果为

scipy稀疏数组coo_array如何实现

但需要注意一点,若行数组和列数组所对应的矩阵坐标发生了重复,那么重复位置处对应的值会累加,

row  = np.array([0, 0, 1, 3, 1, 0, 0])
col  = np.array([0, 2, 1, 3, 1, 0, 0])
data = np.array([1, 1, 1, 1, 1, 1, 1])
coo = coo_array((data, (row, col)), shape=(4, 4))
print(coo.toarray())

结果为

scipy稀疏数组coo_array如何实现

初始化方案

  • coo_array(D) D是一个稀疏数组或2 × D 2\\times D2×D数组

  • coo_array(S) S是另一种稀疏数组

  • coo_array((M, N),dtype='d') 创建一个shape为( M , N ) (M, N)(M,N)的空数组,dtype为数据类型

  • coo_array((data, (i,j))) (i, j)是坐标数组,data是数据数组,设新矩阵为a,则a[i[k], j[k]] = data[k]

前三种比较容易理解,下面验证一下第四种

>>> from scipy.sparse import coo_array
>>> import numpy as np
>>> data = np.random.rand(3)
>>> x = y = np.arange(3).astype(int)
>>> coo = coo_array((data,(x,y)))
>>> coo.toarray()
array([[0.28050236, 0.        , 0.        ],
       [0.        , 0.59568482, 0.        ],
       [0.        , 0.        , 0.84392724]])

内置方法

稀疏数组在计算上并不便捷,所以coo_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稀疏数组coo_array如何实现”的内容了,经过本文的学习后,相信大家对scipy稀疏数组coo_array如何实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是捷杰建站,小编将为大家推送更多相关知识点的文章,欢迎关注!

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