首页 > 解决方案 > for 循环的索引标量变量无效

问题描述

我试图制作一个 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))

标签: pythonpandasnumpy

解决方案


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

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

因此,从第二次迭代开始a,它不是一个数组而是一个标量,因此你不能索引它,并且会引发这样的错误。


推荐阅读