【问题标题】:Invalid index scalar variable for a for loopfor 循环的索引标量变量无效
【发布时间】:2020-03-27 18:05:24
【问题描述】:

我尝试创建一个 for 循环,但到目前为止我没有任何成功。第一次迭代执行完美,但之后它给出了错误:

IndexError:标量变量的索引无效

对于Ylog=[(data1.Z>a[i])&(data1.Z<a[i+1])]这一行

我不知道它来自哪里......

import matplotlib.pyplot as plt
import pandas as pd
from scipy import stats

base=pd.read_csv('pont du gard.csv',sep=';',index_col=0)
data1=pd.read_csv('P1.csv',sep=';',index_col=0)

P1=np.sqrt((base.X['Base']-data1.X)**2+(base.Y['Base']-data1.Y)**2)

a=np.array([77,86.6,95,115,125])
for i in range(5):
    Xlog=[(P1)]
    Ylog=[(data1.Z>a[i])&(data1.Z<a[i+1])]
    logique=np.logical_and(Xlog,Ylog).flatten()
    x=P1[logique]
    z=data1.Z[logique]
    a, b, r_value, p_value, std_err = stats.linregress(x,z)
    plt.plot(x,a*x+b)
    print('Pendage P1:',np.arctan(a1)*180/np.pi,'°')
    print('Erreur de :', 1-np.absolute(r_value))

【问题讨论】:

  • i 为4 时,a[i+1] 将超出索引。然而,这不是错误所说的。
  • 是的,我将 in range(5) 更改为 in range(4) 但仍然出现此错误...谢谢

标签: python pandas numpy


【解决方案1】:

问题是在循环中你重新定义了变量a

a, b, r_value, p_value, std_err = stats.linregress(x,z)

因此,从第二次迭代开始,a 不是数组而是标量,因此您无法对其进行索引,从而引发此类错误。

【讨论】:

    猜你喜欢
    • 2016-03-25
    • 1970-01-01
    • 2020-05-17
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 2020-05-09
    相关资源
    最近更新 更多