scipy稀疏数组coo_array的实现

 更新时间:2023年02月21日 11:08:21   作者:微小冷  
本文主要介绍了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())

其输出结果为

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

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())

结果为

初始化方案

  • 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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • pandas去除重复列的实现方法

    pandas去除重复列的实现方法

    这篇文章主要介绍了pandas去除重复列的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • python输出pdf文档的实例

    python输出pdf文档的实例

    今天小编就为大家分享一篇python输出pdf文档的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Tensorflow加载模型实现图像分类识别流程详解

    Tensorflow加载模型实现图像分类识别流程详解

    在视觉领域可以分为:1、图像分类 2、语义分割 3、实例分割 4、目标检测(跟踪) 5、关键点检测。该篇主要讲解利用Tensorflow 对图像进行图像分类
    2022-09-09
  • Python的Flask框架的简介和安装方法

    Python的Flask框架的简介和安装方法

    这篇文章主要介绍了Python的Flask框架的简介和安装方法,Flask是一款高人气的非常简洁的web开发框架,需要的朋友可以参考下
    2015-11-11
  • 忆童年!用Python实现愤怒的小鸟游戏

    忆童年!用Python实现愤怒的小鸟游戏

    好久都没玩过愤怒的小鸟了,今天咱自己做一个玩玩,文中有非常详细的代码示例,对想玩的小伙伴们很有用哦,需要的朋友可以参考下
    2021-06-06
  • python游戏测试工具自动化遍历游戏中所有关卡

    python游戏测试工具自动化遍历游戏中所有关卡

    这篇文章主要为大家介绍了python游戏测试工具自动化遍历游戏中所有关卡示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Python enumerate函数遍历数据对象组合过程解析

    Python enumerate函数遍历数据对象组合过程解析

    这篇文章主要介绍了Python enumerate函数遍历数据对象组合过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解

    Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解

    这篇文章主要介绍了Python发送QQ邮件实例与QQ邮箱设置详解,需要的朋友可以参考下
    2020-02-02
  • python2.7实现爬虫网页数据

    python2.7实现爬虫网页数据

    这篇文章主要为大家详细介绍了python2.7实现爬虫网页数据,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • python 对excel交互工具的使用详情

    python 对excel交互工具的使用详情

    这篇文章主要介绍了python 对excel交互工具的使用详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07

最新评论