我是Python的新手。我在R中有一些代码正在尝试用Python重写,但遇到了一个我似乎找不到答案的问题-如果已经回答或答案很明显,我很抱歉,我已经搜索过并且无法解决我的问题。
我有一个列表“高度”,它是电子表格中481个数字的列。我希望使用hrc,它是从高度的最小值到最大值的列表,其长度与高度列表相同,但所有值均等距。对于hrc中的每个值,我想通过以下代码运行它,但出现Indexerror:列表索引超出范围。
hrc = np.linspace(min(height),max(height),len(height))
Qrc = []
for i in range(0,len(hrc)):
if(hrc[i]<0.685):
Qrc.append(30.69*((hrc[i]-0.156)**1.115))
elif(0.685<=hrc[i] and hrc[i]<1.917):
Qrc.append(27.884*((hrc[i]-0.028)**1.462))
elif(1.917<=hrc[i]):
Qrc.append(30.127*((hrc[i]-0.153)**1.502))
感谢您的帮助!
答案 0 :(得分:1)
请勿在列表中建立索引(如果不需要的话)-遍历其值。
检查您的if
条件,可以简化它们-如果一个较小的范围适合,则下一个范围不需要检查现在的值是否大于该较低的范围(如果是,则不正在检查那个):
import numpy as np
height = [i/100.0 for i in range(0,200,20)]
hrc = np.linspace(min(height),max(height),len(height))
Qrc = []
for value in hrc:
if value < 0.685 :
Qrc.append(30.69*((value-0.156)**1.115))
elif value < 1.917 :
Qrc.append(27.884*((value-0.028)**1.462))
else:
Qrc.append(30.127*((value-0.153)**1.502))
print(len(height)) # 10
print(len(hrc)) # 10
print(hrc)
print(Qrc)
输出:
[0. 0.2 0.4 0.6 0.8 1. 1.2 1.4 1.6 1.8]
[nan, 0.942858721586344, 6.367024848753282, 12.411632276269644,
19.100800437337597, 26.749961012743743, 35.16634580199501,
44.275837504844475, 54.021755132798525, 64.35896171368269]