专栏首页Python小屋Python字典二次开发实现稀疏矩阵表示与简单计算

Python字典二次开发实现稀疏矩阵表示与简单计算

问题描述:所谓稀疏矩阵是指,矩阵中大部分元素的值为0,只有少量非0元素。对于稀疏矩阵,如果存储所有元素的话,浪费空间较多,一般采取的方式是只存储非0元素及其位置。

思考下面的几个问题:

1)如何使用字典来表示稀疏矩阵呢?“键”是什么,“值”是什么?

2)如果使用字典表示稀疏矩阵的话,如何支持矩阵与标量的乘、除运算,以及矩阵之间的加、减、乘运算?

3)如何把二维列表形式的矩阵转换为稀疏矩阵的形式,如何把稀疏矩阵转换为普通矩阵的形式?

4)写好的代码有没有冗余,有没有简化和复用的可能,有没有可以优化的可能?

试着想一想,写一写,然后到文末查看参考代码。

参考代码:

把上面的代码保存为SparseMatrix.py,下面是这个稀疏矩阵类的简单用法:

本文分享自微信公众号 - Python小屋(Python_xiaowu),作者:董付国

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-09-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python运算符含义汇总

    本文以Python 3.5及其以后的版本为主进行介绍。 运算符功能说明+算术加法,列表、元组、字符串合并与连接-算术减法,集合差集*乘法,序列重复/真除法//求...

    Python小屋屋主
  • Python使用numpy计算矩阵特征值、特征向量与逆矩阵

    Python扩展库numpy.linalg的eig()函数可以用来计算矩阵的特征值与特征向量,而numpy.linalg.inv()函数用来计算可逆矩阵的逆矩阵...

    Python小屋屋主
  • Python+numpy实现矩阵QR分解

    感谢广东东软学院计算机系赵晨杰老师的交流。 如果实(复)非奇异矩阵A能够化成正交(酉)矩阵Q与实(复)非奇异上三角矩阵R的乘积,即A=QR,则称其为A的QR分解...

    Python小屋屋主
  • iOS transform(基础)

    大壮
  • 想学人工智能,先从理解矩阵乘法开始

    教科书告诉你,计算规则是,第一个矩阵第一行的每个数字(2和1),各自乘以第二个矩阵第一列对应位置的数字(1和1),然后将乘积相加( 2 x 1 + 1 x 1)...

    Python猫
  • 博客 | MIT—线性代数(下)

    1、 投影矩阵与最小二乘:向量子空间投影在机器学习中的应用最为广泛。就拿最小二乘的线性拟合来说,首先根据抽样特征维度假设线性方程形式,即假设函数。

    AI研习社
  • 手把手教你将矩阵&概率画成图

    今天我想分享一个简单的 idea,它既不新颖也不花哨。甚至很多人都有过这个想法。但是无论你有没有这么想过,我都希望你能抽出几分钟和我一起重新感受这个想法。

    机器之心
  • 快速学习-机器学习(线性代数[矩阵])

    cwl_java
  • 线性代数精华2——逆矩阵的推导过程

    矩阵的定义很简单,就是若干个数按照顺序排列在一起的数表。比如m * n个数,排成一个m * n的数表,就称为一个m * n的矩阵。

    TechFlow-承志
  • 线性代数--MIT18.06(三十五)

    行不满秩,因此其不满秩,那么它不可能为正定矩阵,可以为半正定矩阵。 于是我们也就知道

    fireWang

扫码关注云+社区

领取腾讯云代金券