Я получаю эту ошибку: 'TypeError: list indices must be integers, not float'
но функции я использую необходимость принимать не являющихся целочисленные значения, в противном случае мои результаты разные ...
Просто чтобы дать вам идея, я написал некоторый код, который подходит для гауссовых к некоторым данным с одним пиком. Для этого мне нужно вычислить оценочное значение для сигмы. Чтобы получить это, я написал две функции, которые предназначены для просмотра данных, используйте значение x для пика, чтобы найти две точки (r_pos и l_pos), которые являются обе стороны пика и заданное расстояние от оси y (молотить). И из этого я могу получить оценочную сигму (r_pos - l_pos).
Это все идет об из куска кода, который работал, но знак лист для моих курсового говорит, что нужно использовать функции, так что я пытаюсь превратить это:Использование недопустимых целочисленных значений, как в функции
I0 = max(y)
pos = y.index(I0)
print 'Peak value is',I0,'Counts per sec at' ,x[pos], 'degrees(2theta)'
print pos,I0
#left position
thresh = 10
i = pos
while y[i] > thresh:
i -= 1
l_pos = x[i]
#right position
thresh = 10
i = y.index(I0)
while y[i] > thresh:
i += 1
r_pos = x[i]
print r_pos
sigma0 = r_pos - l_pos
print sigma0
В то, что использует функцию что можно назвать и т.д. Это моя попытка:
def Peak_Find(x,y):
I0 = max(y)
pos = y.index(I0)
return I0, x[pos]
def R_Pos(thresh,position):
i = position
while y[i] > thresh:
i += 0.1
r_pos = x[i]
return r_pos
peak_y,peak_x = Peak_Find(x,y)
Right Position = R_Pos(10,peak_x)
peak_y = 855,0 Peak_x = 32,1, кстати
Я уверен, что у вас будет около 6 комментариев в течение следующих 5 секунд с запросом кода ;-), поэтому я заберу этот мяч. Можете ли вы опубликовать код (минимальный пример того, что демонстрирует проблему) и ожидаемые входы/выходы? – mgilson
Даже не видя кода, могу сказать, что вы используете float в качестве индекса списка. Не делай этого. – ApproachingDarknessFish
Вам нужно сообщить нам, что функции _do_ с этими нецелыми значениями, и _why_ вы пытаетесь использовать их в качестве индекса, прежде чем мы сможем рассказать вам, что вам нужно сделать, чтобы исправить это. Возможно, вам нужно использовать 'int (x)' или 'round (x)' в качестве индекса, или, возможно, вам нужно использовать dict, а не список, или, может быть, вам нужно написать код для интерполяции между значениями или ... Как мы могли бы знать, не имея представления о том, что вы пытаетесь сделать? – abarnert