写出两个(密集)向量相加的函数
时间: 2023-05-27 18:06:32 浏览: 44
假设有两个密集向量A和B,两个向量长度相等。
1. Python代码实现:
def add_dense_vectors(A, B):
result = []
for i in range(len(A)):
result.append(A[i] + B[i])
return result
2. NumPy代码实现:
import numpy as np
def add_dense_vectors(A, B):
return np.add(A, B)
相关问题
python写出两个(密集)向量相加的函数
以下是两个密集向量相加的Python函数示例:
```python
def add_dense_vectors(vec1, vec2):
"""
Add two dense vectors element-wise.
Args:
vec1 (list): a dense vector represented as a list of numbers
vec2 (list): another dense vector represented as a list of numbers
Returns:
list: a dense vector representing the sum of vec1 and vec2
"""
assert len(vec1) == len(vec2), "The two vectors must have the same length."
return [vec1[i] + vec2[i] for i in range(len(vec1))]
def main():
vec1 = [1, 2, 3, 4, 5]
vec2 = [5, 4, 3, 2, 1]
result = add_dense_vectors(vec1, vec2)
print(result) # Output: [6, 6, 6, 6, 6]
if __name__ == '__main__':
main()
```
另一个示例:
```python
import numpy as np
def add_dense_vectors(vec1, vec2):
"""
Add two dense vectors using NumPy.
Args:
vec1 (list): a dense vector represented as a list of numbers
vec2 (list): another dense vector represented as a list of numbers
Returns:
list: a dense vector representing the sum of vec1 and vec2
"""
assert len(vec1) == len(vec2), "The two vectors must have the same length."
return list(np.array(vec1) + np.array(vec2))
def main():
vec1 = [1, 2, 3, 4, 5]
vec2 = [5, 4, 3, 2, 1]
result = add_dense_vectors(vec1, vec2)
print(result) # Output: [6, 6, 6, 6, 6]
if __name__ == '__main__':
main()
```
这两个函数都需要两个相同长度的密集向量作为输入,并返回一个向量,其中每个元素等于相应的两个输入向量的元素之和。第一个函数使用纯Python来实现,而第二个函数使用NumPy库来实现。
练习5:向量函数 我们来实现一些向量函数。有两种类型的向量,法向量和密向量,我们可以用列表来表示。对于稀疏向量,其中许多元素为零,这是低效的。相反,我们使用一个字典,其中键为非零值的下标,然后与键对应的值就是该下标处的向量的值。因此,向量[1;2;4]可以存储为列表:[1,2,4]或字典{0:1,1:2,2:4} (a)写出两个(密集)向量相加的函数 (b)写出两个(密集)向量相乘(即内积)的函数 (c)编写两个稀疏向量相加的函数 (d)编写两个稀疏向量相乘的函数 (e)编写一个函数,将稀疏向量和稠密向量相加 (f)编写一个将稀疏向量和稠密向量相乘的函数
(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
```