函数定义:
#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)