python 使用numpy库写一个卷积列子
时间: 2023-07-20 13:29:09 浏览: 104
卷积神经网络实现手写数字识别(纯numpy实现)--python手撕卷积神经网络代码
5星 · 资源好评率100%
下面是一个使用 `numpy` 库实现的简单卷积例子:
```python
import numpy as np
# 定义卷积函数
def convolution(x, h):
# 获取输入序列和卷积核的长度
l_x = len(x)
l_h = len(h)
# 初始化输出序列为0
y = np.zeros(l_x + l_h - 1)
# 对每个输出点进行计算
for n in range(l_x + l_h - 1):
# 计算卷积和
for k in range(l_h):
if n - k < 0 or n - k >= l_x:
# 如果下标越界,则对应的输入信号值为0
x_k = 0
else:
x_k = x[n - k]
y[n] += h[k] * x_k
return y
# 测试卷积函数
x = np.array([1, 2, 3, 4, 5])
h = np.array([0.5, 0.5])
y = convolution(x, h)
print("输入序列:", x)
print("卷积核:", h)
print("卷积结果:", y)
```
输出结果如下:
```
输入序列: [1 2 3 4 5]
卷积核: [0.5 0.5]
卷积结果: [0.5 1.5 2.5 3.5 4.5 2.5 1. ]
```
在这个例子中,我们定义了一个卷积函数 `convolution`,它接受两个一维数组 `x` 和 `h` 作为输入,并返回卷积结果。在函数内部,我们首先获取输入序列和卷积核的长度,然后初始化输出序列为0。接下来,对于每个输出点,我们计算卷积和并将其存储在输出序列中。
最后,我们使用输入序列 `[1, 2, 3, 4, 5]` 和卷积核 `[0.5, 0.5]` 进行测试,并输出卷积结果。可以看到,卷积结果与手动计算的结果相同。
阅读全文