返回顶部
首页 > 资讯 > 后端开发 > Python >Python 如何解决稀疏矩阵运算
  • 854
分享到

Python 如何解决稀疏矩阵运算

2024-04-02 19:04:59 854人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

用python求解微分线性方程 因为之前用matlab也编写过,所以前不久试着用Python写,感觉之间互通点也蛮多的,易理解。 题目:稀疏线性方程组的求解方法 简单的方程如: AX

python求解微分线性方程

因为之前用matlab也编写过,所以前不久试着用Python写,感觉之间互通点也蛮多的,易理解。

题目:稀疏线性方程组的求解方法

简单的方程如: AX=b

其中

A矩阵与b向量

python有很多功能库,这些库对于编程很有帮助,可以在PyCharm的Project Interpreter导入库,例如numpy、os、scipy等比较基础的库,

下面是用来求解的代码:


import numpy as np
from scipy import linalg
import os
#输入矩阵维数
print("你好,这里是计算稀疏矩阵线性方程组的地方,非诚勿扰!")
dism_num = input("你的A矩阵维数是:")
dism_num = int(dism_num)
print("接下来请你依次输入矩阵的行向量(注意只能输入英文逗号,):")
A =[]
#X =[]
for i in range(1,dism_num+1):
    a=input("第"+str(i)+"行向量是:")
    alist = a.split(",")
    alist = [int(alist[j]) for j in range(len(alist))]
    A.append(alist)
print("你所输入的矩阵行向量是:")
print(A)
#记录输入的X矩阵

#输入向量b
print("输入b向量")
b = input("b向量是:")
b_list = b.split(",")
b_list = [int(b_list[j]) for j in range(len(b_list))]
print("你输入的b向量是:")
print(b_list)
#记录b向量

#询问是否计算单个答案(单元素)
ask = input("是否只需求解单个值:(是或否)")
while(True):
    if ask == '是':
        ask_a = 'T'
        ask_num = input("请继续输入你所需要的答案序号:")
        ask_num = int(ask_num)
        if ask_num<=dism_num and ask_num>0:
            print("OK,马上帮你计算")
            break
        else:
            print("输入的值超出矩阵维数,请重新输入:")
    if ask == '否':
        ask_a = 'F'
        break
#询问完成,只有当用户输入正确的序号才可以进行计算,否则重新询问

#开始计算x向量了
A = np.array(A)
b = np.array(b_list)
x = linalg.solve(A,b)
print("计算的结果的:")
if ask_a == 'F':
    print(x)
if ask_a =='T':
    print(x[ask_num-1])
#计算完x向量了

os.system("pause")
#用于py文件结束玩暂停显示结果

其基本流程如图:

代码开发流程

运行结果如下:

补充:python 多线程稀疏矩阵乘法

看代码吧~


import threading, time
import numpy as np
res = []
class MyThread(threading.Thread):
    def __init__(self,i,j,m1,m2):
        threading.Thread.__init__(self)
        self.x, self.y = i,j
        self.m1, self.m2 = m1, m2
    def run(self):
        global res, lock
        if lock.acquire():
            m1 = self.m1[self.m1[:,0]==self.x]
            m2 = self.m2[self.m2[:,1]==self.y]
            value = 0.
            for item1 in m1:
                for item2 in m2:
                    if item1[1] == item2[0]:
                        value += item1[2]*item2[2]
            res.append([self.x,self.y,value])
            lock.release()
if "__main__" == __name__:
    m1 = [[2,2],[0,0,1],[0,1,2],[1,0,3],[1,1,4]]
    m2 = [[2,3],[0,0,2],[0,2,1],[1,2,3],[1,1,4]]
    s1, s2 = m1[0], m2[0]
    assert s1[1]==s2[0], 'mismatch'
    m1_value = np.array(m1[1:])
    m2_value = np.array(m2[1:])
    rows, cols = s1[0], s2[1]
    res.append([rows, cols])
    ThreadList = []
    lock = threading.Lock()
    for i in range(rows):
        for j in range(cols):
            t = MyThread(i,j,m1_value,m2_value)
            ThreadList.append(t)
    for t in ThreadList:
        t.start()
    for t in ThreadList:
        t.join()
    print (res)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: Python 如何解决稀疏矩阵运算

本文链接: https://lsjlt.com/news/126825.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python 如何解决稀疏矩阵运算
    用Python求解微分线性方程 因为之前用matlab也编写过,所以前不久试着用python写,感觉之间互通点也蛮多的,易理解。 题目:稀疏线性方程组的求解方法 简单的方程如: AX...
    99+
    2024-04-02
  • Scipy稀疏矩阵bsr_array如何使用
    本篇内容主要讲解“Scipy稀疏矩阵bsr_array如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Scipy稀疏矩阵bsr_array如何使用”吧!基本原理bsr,即Block Spa...
    99+
    2023-07-05
  • Python稀疏矩阵scipy.sparse包使用详解
    目录1. 前言2. 导入包3. 稀疏矩阵总览4. 稀疏矩阵详细介绍4.1 coo_matrix4.2 dok_matrix4.3 lil_matrix4.4 dia_matrix4....
    99+
    2023-02-16
    Python稀疏矩阵 Python scipy.sparse包
  • C++超详细讲解稀疏矩阵
    目录稀疏矩阵矩阵与稀疏矩阵的定义稀疏矩阵的转置详细思路思路一思路二稀疏矩阵的乘法详细思路稀疏矩阵 矩阵与稀疏矩阵的定义 Q:什么是矩阵 A:数学上,一个矩阵由 m 行 n 列的元素组...
    99+
    2024-04-02
  • python scipy 稀疏矩阵的使用说明
    稀疏矩阵格式 coo_matrix coo_matrix 是最简单的稀疏矩阵存储方式,采用三元组(row, col, data)(或称为ijv format)的形式来存储矩阵中非零元素的信息。 在实际使用中,一般...
    99+
    2022-06-02
    python scipy 稀疏矩阵
  • python的高级数组之稀疏矩阵
      稀疏矩阵的定义: 具有少量非零项的矩阵(在矩阵中,若数值0的元素数目远多于非0元素的数目,并且非0元素分布没有规律时,)则称该矩阵为稀疏矩阵;相反,为稠密矩阵。非零元素的总数比上矩阵所有元素的总数为矩阵的稠密度。 稀疏矩阵的两个动...
    99+
    2023-01-31
    稀疏 数组 矩阵
  • Python如何实现两种稀疏矩阵的最小二乘法
    今天小编给大家分享一下Python如何实现两种稀疏矩阵的最小二乘法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。最小二乘法s...
    99+
    2023-07-05
  • 华为OD机试 - 矩阵稀疏扫描(Java & JS & Python)
    题目描述 如果矩阵中的许多系数都为零,那么该矩阵就是稀疏的。对稀疏现象有兴趣是因为它的开发可以带来巨大的计算节省,并且在许多大的实践中都会出现矩阵稀疏的问题。 给定一个矩阵,现在需要逐行和逐列地扫描矩阵,如果某一行或者某一列内,存在连续出现...
    99+
    2023-09-01
    算法 华为机试 Java JavaScript Python
  • Python实现两种稀疏矩阵的最小二乘法
    目录最小二乘法返回值测试最小二乘法 scipy.sparse.linalg实现了两种稀疏矩阵最小二乘法lsqr和lsmr,前者是经典算法,后者来自斯坦福优化实验室,据称可以比lsqr...
    99+
    2023-02-26
    Python稀疏矩阵最小二乘法 Python稀疏矩阵 Python 最小二乘法
  • java实现稀疏矩阵的压缩与解压的方法
    目录任务要求思路分析稀疏矩阵的压缩稀疏矩阵的解压代码实现任务要求 把棋盘当作一个稀疏矩阵,0表示没棋,1表示黑棋,2表示蓝棋。 把该稀疏矩阵压缩以三元组形式表示并以文件形式保存,再写...
    99+
    2024-04-02
  • python中的矩阵运算
    转自:https://www.cnblogs.com/chamie/p/4870078.html 摘自:http://m.blog.csdn.net/blog/taxueguilai1992/46581861 python的numpy库...
    99+
    2023-01-31
    矩阵 python
  • 常见矩阵运算Python
    python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要导入numpy的包。 1.numpy的导入和使用 from numpy import *;#导入numpy的库函数 import numpy as np; #...
    99+
    2023-01-31
    矩阵 常见 Python
  • python:矩阵的基本运算
    一、Python 矩阵基本运算 引入 numpy 库 import numpy as np python矩阵操作 1)使用 mat 函数创建一个 2X3矩阵 a = np.mat([[1, 2, 3], [4, 5, 6]])  2)使用...
    99+
    2023-09-02
    python 矩阵 numpy
  • python的常见矩阵运算
    python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要导入numpy的包。 1.numpy的导入和使用 from numpy import *;#导入numpy的库函数 import numpy as n...
    99+
    2023-01-31
    矩阵 常见 python
  • Python中的Numpy矩阵运算
    目录在学习线性代数时我们所接触的矩阵之间的乘法是矩阵的叉乘,有这样一个前提: 若矩阵A是m*n阶的,B是p*q阶的矩阵,AB能相乘,首先得满足:n=p,即A的列数要等于B的行数。运算...
    99+
    2024-04-02
  • Python 的矩阵传播机制Broadcasting和矩阵运算
    目录一、Python的矩阵传播机制(Broadcasting)二、下面展示什么是python的传播机制三、利用numpy的内置函数对矩阵进行操作四、定义自己的函数来处理矩阵五、总结一...
    99+
    2024-04-02
  • 【华为OD统一考试B卷 | 100分】矩阵稀疏扫描(C++ Java JavaScript Python)
    华为OD在线OJ 已购买本专栏用户,请私信博主开通账号,在线刷题!!! 在线OJ:立即刷题 题库专栏:2023华为OD机试(A卷+B卷)(C++JavaJSPy) 题目描述 如果矩阵中的许多系数都为零...
    99+
    2023-10-05
    矩阵 c++ java python 华为
  • 关于python的矩阵乘法运算
    目录一、矩阵乘法1. A@B 和 np.dot(A,B)2. A*B 或 np.multiply(A,B)二、邻接矩阵的相乘的意义1.定义2.问题3.理解4.代码实现一、矩阵乘法 矩...
    99+
    2023-05-17
    python运算 python 矩阵乘法
  • NumPy 打包 Python 编程算法:如何实现高效的矩阵运算?
    NumPy 是 Python 编程中非常重要的一个库,它能够帮助我们实现高效的矩阵运算。本文将为大家介绍 NumPy 的基本使用方法,以及如何用 NumPy 实现高效的矩阵运算。 一、NumPy 简介 NumPy 是 Python 编程中非...
    99+
    2023-06-30
    打包 numy 编程算法
  • Java如何解实现一元稀疏多项式计算器
    这篇文章将为大家详细讲解有关Java如何解实现一元稀疏多项式计算器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。要求:一元稀疏多项式计算器【问题描述】 设计一个一元稀疏多项式简单计算器。【基本要求】一元稀...
    99+
    2023-06-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作