将数组元素设置为零
假设我有:
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 修改新数组中特定元素的值。我想让 Python 保留前 50% 的元素,把其他的元素设置为零,所以结果应该看起来像这样:
r = r = [ 21.+0.j , -3.+5.19615242j , 0 , 0 ]
我该怎么做呢?
3 个回答
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]
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])