python,关于密集向量和稀疏向量

函数定义:

#a)写一个添加两个(密集的)向量的函数

import random


#a).写一个函数生成两个密集向量
def fun1(n) :  
    list1 = []
    list2 = []
    for i in range(n):        
        list1.append(random.randint(0,100))
        list2.append(random.randint(0,100))       
    return list1, list2


#b)#向量内积(点乘)

#向量内积(点乘) 
def fun2(list1,list2):
    sum1 = 0
    for i in range(len(list1)):
        sum1 = sum1 + list1[i]*list2[i]
        
    return sum1    

#c)生成两个稀疏向量

#生成两个稀疏向量
def fun3(n):
    
    list3 = []
    list4 = []
    
    list5 = []
    list6 = []
    for i in range(n):        
        a = random.randint(0,100)
        b = random.randint(0,100)        
        if a != 0:
            list3.append(i)
            list4.append(a)
            
        if b != 0:
            list5.append(i)
            list6.append(b)
      
    dic1 = dict(zip(list3,list4))
    dic2 = dict(zip(list5,list6))     
    
    return dic1,dic2    

#d)两个稀疏向量相乘(基于fun3)

#两个稀疏向量相乘(基于fun3)
def fun4(dic1,dic2):

    sum1 = 0
    list1 = dic1.keys()
    list2 = dic2.keys()

    
    for i in list1:
        if i in list2:
            sum1 = sum1 + dic1[i] * dic2[i]
            
    return sum1

#e)#生成一个稀疏向量和一个密集向量

#生成一个稀疏向量和一个密集向量    
def fun5(n):
    list7 = []
    list8 = []
    list9 = []
    for i in range(n):        
        list7.append(random.randint(0,100))
        a = random.randint(0,100)
        if a != 0:
            list8.append(i)
            list9.append(a)
        
    dic4 = dict(zip(list8,list9))
    return  list7,dic4  

#f)#稀疏向量和密集向量相乘的函数

#稀疏向量和密集向量相乘的函数     
def fun6(sparse3,list3):
    
    list1 = list(sparse3.keys())

    sum1 = 0
    
    for i in list1 :
        sum1 = sum1 + list3[i]*list1[i]
        
    return sum1    

以下是执行语句:

list1,list2 = fun1(10)  

inner_mult = fun2(list1,list2)#内积,点乘

sparse1,sparse2 = fun3(10)

sparse_mult = fun4(sparse1,sparse2)

list3,sparse3 = fun5(10)

two_kind_mult = fun6(sparse3,list3)



print('生成两个稠密矩阵')
print(list1)
print(list2,'\n\n')
print('将两个稠密矩阵内积')
print(inner_mult,'\n\n')
print('生成两个稀疏矩阵')
print(sparse1)
print(sparse2,'\n\n')
print('输入两个稀疏向量,并返回他们的乘积')
print(sparse_mult,'\n')
print('生成一个稠密向量,一个稀疏向量')
print(list3)
print(sparse3,'\n')
print('输入一个稀疏向量和一个密集向量,并返回他们的乘积')
print(two_kind_mult)
     
   

结果展示:

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鄢广杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值