我有一个字典,每个键对应一个具有相同数值的列表。我把每个列表都当作一个“列”。使用每个列表中的值,我试图编写一个线性近似函数。它可以工作,除非我遇到一个值在列表中重复的问题。当我使用indexof时,它返回一个y值,对应于传入的x值的第一次出现,而不是实际的y值,该y值与x值在各自列表中的索引位于同一索引中。我要把字典改成一个小矩阵吗?或者有没有一种方法可以用字典来做到这一点。你知道吗
def calc_target(x1, x2, type1, type2, X):
"""Uses linear approximation to return a calculated
value for the passed in type using a target value.
Keyword arguments:
x1 -- first x value
x2 -- second x value
type1 -- type of value to be calculated
type2 -- type of value passed in
X -- target value
"""
y2 = float(data[type1][data[type2].index(str(x2))])
y1 = float(data[type1][data[type2].index(str(x1))])
print 'X:'
print x1
print x2
print 'Y:'
print y1
print y2
slope = (y2 - y1)/(x2 - x1)
print slope
return slope * (X - x1) + y1
例如,如果我的x值是3,并且列表中的第二个2对应于键2,那么如何确保我得到的y值是21而不是24。因为如果我使用indexof,它只会在2的第一个实例返回相应的值,即24而不是21。你知道吗
Numpy数组是一个很好的选择,但我找不到一个好的答案,不需要我重组我的整个程序。我通过更改calc\u target函数的传入参数以包含index1和index2值来解决这个问题。这些指标分别代表x1和x2的指标。当我得到“y值”时,我只使用这些索引值。你知道吗
如果要遍历列表,可以同时遍历这两个列表,如
这样,您就可以确保在每个列表中查看相同的索引。不过,您并不是直接按值查找它们。有帮助吗?你知道吗
相关问题 更多 >
编程相关推荐