首页 > 解决方案 > 用python制作稀疏矩阵和向量乘法程序的问题

问题描述

我正在用没有 numpy的 python 制作稀疏矩阵和向量乘法程序。但是,结果有一点问题。当我在每个处输入行、列、非零矩阵时,4、5、6。结果应该像第一张图片一样带有4个空格。但是当我运行它时,结果显示 5 个空格。我可以解决这个问题吗?

更正一个结果: 用结果纠正一个

结果问题: 结果有问题

代码:

from random import randint
import random

def printMatrix(m):
    for i in range(m["nr"]):
        for j in range(m["nc"]):
            print(m.get((i,j),0), end=" ")
        print("")

def SpDOT(m,i,v):
    sum = 0;
    for k in range(m["nr"]):
        sum += m.get((i,k),0)*v[k]
    return sum

def Smvm(m,vactor):
    ans=[]
    for i in range(mat["nc"]):
        ans.append(SpDOT(m,i,vector))
    return(ans)



nr=int(input('Number of rows: '))
nc=int(input('Number of columns: '))
nz=int(input('Max Number of non-zeros in the matrix: ')) #input

mat = {}
mat["nr"]=nr
mat["nc"]=nc
 
for _ in range(nz):
    mat[randint(0,nr-1), randint(0,nc-1)] = randint(1,2)
dic = {"nr":nr, "nc":nc}
for key, value in mat.items():
    if value == 1 or value == 2:
        dic[key]=value                            
        
print(dic)
 
print("Sparse Matrix:")
printMatrix(mat)


vector = []
for i in range(nc):
    vector.append(random.randint(0,3))
print("vector: ")    
print(vector)


vec2 = Smvm(mat, vector)
print("Result: ")   
print(vec2)

标签: pythonmatrixvector

解决方案


推荐阅读