IndexError: перечислить индекс вне диапазона в случае, если
Я чрезвычайно новичок в 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))
Я ценю любую помощь!
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]