gpt4 book ai didi

python - 索引错误 : invalid index to scalar variable for double 'for' statement

转载 作者:太空宇宙 更新时间:2023-11-04 01:14:04 25 4
gpt4 key购买 nike

我的目的是在for语句中使用for语句重复计算某个变量的列表。

我的代码如下。

for b in range(0,1487):
c = 18000*b
alpha = np.arctan(np.mean(v[c:c+18000])/np.mean(u[c:c+18000]))
beta = np.arctan(np.mean(w[c:c+18000])/np.mean(u[c:c+18000]))
R01 = R01.reshape((3,3))

for c1 in range(c,c+18000):
windvector = np.array([u[c1],v[c1],w[c1]])
WV = windvector.reshape((3,1))
m = np.dot(R01,WV)
m = m.reshape((1,3))
m = list(m)
M = M + m
for c2 in range(0,18000):
u = M[c2][0]

A = A + [u]
m1 = np.mean(A[0:3000])
m2 = np.mean(A[3000:3000*2])
m3 = np.mean(A[3000*2:3000*3])
m4 = np.mean(A[3000*3:3000*4])
m5 = np.mean(A[3000*4:3000*5])
m6 = np.mean(A[3000*5:3000*6])

M = [m1,m2,m3,m4,m5,m6]

s1 = np.std(A[0:3000])
s2 = np.std(A[3000:3000*2])
s3 = np.std(A[3000*2:3000*3])
s4 = np.std(A[3000*3:3000*4])
s5 = np.std(A[3000*4:3000*5])
s6 = np.std(A[3000*5:3000*6])

S = [s1,s2,s3,s4,s5,s6]

RN = fabs((np.mean(S)-np.std(A))/np.std(A))

RNT = RNT + [RN]

如代码所示,我想重复获取 1487 个 RN 值,但是当我运行这段代码时,这在预期的 1487 旋转 1 圈后就停止了,在 alpha = np.arctan(np.mean(v[c:c+18000])/np.mean 中显示错误消息“文件“RN_stationarity.py”,第 25 行(u[c:c+18000])) IndexError:标量变量的索引无效。”

我不确定为什么会出现这种错误。我在 stackoverflow 中尝试了一些解决方案,但都没有用。

请您提供一些想法或帮助?

非常感谢。

谢谢,

艾萨克

最佳答案

您的问题是您将名称 u 用于两个完全不同的值。在这个循环的开始,它是一个很好的大数组,但在循环的中间,您将它重新分配给一个标量,因此当您在下一次循环中尝试对其进行索引时,会出现 IndexError


来自评论:

u should have total 1487*18000 numbers which I already checked

所以,这就是我知道它开始有效的方式。

但是在循环的中间:

for c2 in range(0,18000):
u = M[c2][0]

A = A + [u]

根据其他评论,M 是一个二维数组。所以,在这个循环之后,u 是一个 0D 数组(即标量)。


解决方案是不要将名称 u 用于两个不相关的事物。将其中一个重命名为其他名称。

更一般地说,解决方案是不要使用无意义的单字母变量名,因为当您这样做时,很难避免不小心重复使用一个字母,而且也很难判断您何时这样做了。

关于python - 索引错误 : invalid index to scalar variable for double 'for' statement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25779368/

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