我想我觉得这有点不对劲。我有一组数据集我正在尝试进行一些分析。这就是我想要做的。比如说以下是数组
signal=[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...]
,我想将数据点0:3
存储在某处,我需要它们,并用零替换0:3
。这就是我这样做的方法,但最终结果是正确的,但存储的0:3
数据点也是零。有人可以帮我从这里出去吗。我认为这样做很简单,但过去几天我一直在与此作斗争。提前谢谢!
这是我的代码:
n = len(signal)
for i in range(n):
first_3points = signal[0:3]
signal[0:3] = 0
trancated_signal = signal
我很高兴看到我哪里出错了!
答案 0 :(得分:2)
看起来你的应用程序更适合使用numpy,它很好地开发用于表示信号样本的数组。您可能已经在使用numpy,因为如果signal
是列表,则作业signal[0:3] = 0
会引发TypeError
。这是我用numpy做的方式:
import numpy as np
N = 256
signal = np.ones(N)
first3 = signal[0:3].copy()
signal[0:3] = 0
请注意,如果您没有first3
signal
中的第一个元素的副本,它只会成为signal
的视图,并且当您更改{{1}中的元素时你也改变了signal
。如果我正确理解了您的问题,那么您需要在first3
signal
中保存原始元素,然后才能更改它们。
答案 1 :(得分:1)
使用普通列表而不是numpy这很简单:
signal = [1] * 20
first_3_points = signal[:3]
signal[:3] = [0] * 3
原始代码中的循环似乎是不必要的。