设置数组的元素等于零

时间:2014-03-27 05:11:09

标签: python fft

让我说我有:

c = array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], float)

然后我进行快速傅里叶变换:

r = rfft(c)

生成以下复杂数组:

r = [ 21.+0.j ,  -3.+5.19615242j , -3.+1.73205081j , -3.+0.j ]

新数组中的元素数量是1/2 * N + 1。 我试图告诉python更改新数组中SPECIFIC元素的值。我想告诉python保留FIRST 50%的元素并将其他元素设置为零,所以相反结果看起来像

r =     r = [ 21.+0.j ,  -3.+5.19615242j , 0 , 0 ]

我该怎么做?

3 个答案:

答案 0 :(得分:1)

您可以使用slice notation并将结果扩展到正确的长度:

r = r[:len(r)/2].extend([0] * (len(r) - len(r)  / 2))

* syntax只重复指定次数的零元素。

答案 1 :(得分:1)

rfft返回一个numpy数组,有助于轻松操作数组。

c = [1,2,3,4,5,6]
r = rfft(c)
r[r.shape[0]/2:] = 0
r
>> array([21.+0.j, -3.+5.1961j, 0.+0.j , 0.+0.j])

答案 2 :(得分:0)

您可以将列表拆分为一半,然后将零列表附加到与剩余部分相同的长度:

>>> i
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> i[:len(i)/2] + [0]*len(i[len(i)/2:])
[1, 2, 3, 4, 5, 0, 0, 0, 0, 0]