练习5:向量函数 我们来实现一些向量函数。有两种类型的向量,法向量和密向量,我们可以用列表来表示。对于稀疏向量,其中许多元素为零,这是低效的。相反,我们使用一个字典,其中键为非零值的下标,然后与键对应的值就是该下标处的向量的值。因此,向量[1;2;4]可以存储为列表:[1,2,4]或字典{0:1,1:2,2:4} (a)写出两个(密集)向量相加的函数 (b)写出两个(密集)向量相乘(即内积)的函数 (c)编写两个稀疏向量相加的函数 (d)编写两个稀疏向量相乘的函数 (e)编写一个函数,将稀疏向量和稠密向量相加 (f)编写一个将稀疏向量和稠密向量相乘的函数
时间: 2023-05-14 16:05:52 浏览: 102
(a) 密集向量相加的函数:
```python
def dense_vector_add(v1, v2):
return [v1[i] + v2[i] for i in range(len(v1))]
```
(b) 密集向量相乘的函数:
```python
def dense_vector_multiply(v1, v2):
return sum([v1[i] * v2[i] for i in range(len(v1))])
```
(c) 稀疏向量相加的函数:
```python
def sparse_vector_add(v1, v2):
result = {}
for i in v1:
result[i] = v1[i]
for i in v2:
if i in result:
result[i] += v2[i]
else:
result[i] = v2[i]
return result
```
(d) 稀疏向量相乘的函数:
```python
def sparse_vector_multiply(v1, v2):
result = 0
for i in v1:
if i in v2:
result += v1[i] * v2[i]
return result
```
(e) 稀疏向量和密集向量相加的函数:
```python
def sparse_dense_vector_add(sparse_v, dense_v):
result = dense_v.copy()
for i in sparse_v:
result[i] += sparse_v[i]
return result
```
(f) 稀疏向量和密集向量相乘的函数:
```python
def sparse_dense_vector_multiply(sparse_v, dense_v):
result = 0
for i in sparse_v:
result += sparse_v[i] * dense_v[i]
return result
```
阅读全文