gpt4 book ai didi

python - 将循环中的输出分配给单个列表或数组

转载 作者:行者123 更新时间:2023-11-28 21:52:50 26 4
gpt4 key购买 nike

我仍在寻找自己的 Python 方法,所以这个问题可能非常基础:我试图在 python 中生成一些余弦波,然后对它们进行傅立叶变换。我写了下面的代码:

from pylab import *
from numpy import *
x = linspace(-5,5,100)
t = linspace(0,2000,2001)
w1=cos(2*pi*3*t/2001)
w2=cos(2*pi*10*t/2001)
fourier=0
long(fourier)

Trace = w1+w2
for i in range(1,125,1):
fourier[i] = sum(cos(2*pi*i*t/2001)*Trace)

print fourier
f=linspace(1,125,125)
plot(f,fourier)
show()

因此,我不想按频率计算值频率,而是想制作一个循环,将每个频率从 1 到 125,并将输出存储在一个列表中,以便我可以绘制它们。

Python 不喜欢这样并给出一条消息说:

fourier[i] = sum(cos(2*pi*i*t/2001)*Trace)
TypeError: 'int' object does not support item assignment

知道为什么吗?

最佳答案

也许你想要:

fourier = []

您将其清除为整数,您需要将其清除为列表。

你的fourior类型是整数,你需要把它做成列表,这样它才能支持索引赋值

同时从您的代码中删除 long(fourier)

for i in range(1,126):
fourier[i] = sum(cos(2*pi*i*t/2001)*Trace)

这会给你索引错误

正确的是:

for i in range(1,126):    # you dont need last option as 1, because range step is one by default
fourier.append(sum(cos(2*pi*i*t/2001)*Trace))
OR
fourier.insert(i,sum(cos(2*pi*i*t/2001)*Trace))

最好使用列表推导式,您需要将范围设置为 126 以匹配 f 的尺寸以进行绘图:

fourier = [sum(cos(2*pi*i*t/2001)*Trace) for i in range(1,126)]

关于python - 将循环中的输出分配给单个列表或数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27646938/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com