如何解决如何在python中的两个浮动列表之间建立范围?
有两个列表。
相同数量的元素(浮点数)。
一个具有步骤数的int变量。
是否有命令或命令能够使范围从第一个值到第二个值?
divider = 12
startValues= [0.9,0.3,0.8,0.9]
endValues = [0.6,1.0,0.4]
#the result should look like this:
#incrementalValues = [0.025,0.05833,0.0166,0.04166]
#startValues = [0.9,0.9 ]
#intermediaryVal = [0.875,0.35833,0.8166,0.85834 ]
#intermediaryVal = [0.85,0.4166,0.8333,0.81668 ]
#intermediaryVal = [0.825,0.4749,0.8500,0.77502 ]
#intermediaryVal = [0.8,0.5333,0.8666,0.73336 ]
#intermediaryVal = [0.775,0.5916,0.8833,0.6917 ]
#intermediaryVal = [0.75,0.6499,0.9000,0.65004 ]
#intermediaryVal = [0.725,0.7083,0.9166,0.60838 ]
#intermediaryVal = [0.7,0.7666,0.9333,0.56672 ]
#intermediaryVal = [0.675,0.8249,0.9500,0.52506 ]
#intermediaryVal = [0.65,0.9666,0.4834 ]
#intermediaryVal = [0.625,0.9416,0.9833,0.44174 ]
#endValues = [0.6,0.4 ]
解决方法
是的,您可以使用numpy
import numpy as np
spaces = list(np.linspace(0.5,1.5,8))
print(spaces)
# output :
# [0.5,0.64285714285714279,0.7857142857142857,0.9285714285714286,1.0714285714285714,1.2142857142857142,1.3571428571428572,1.5]
,
一个简单的函数可能就是这个函数(也许名字有点不走运):
def listRange(startValues,endValues,divider):
steps = [(e-s)/divider for s,e in zip(startValues,endValues)]
for t in range(1,divider+1):
yield [v+s*t for v,s in zip(startValues,steps)]
用法类似于range
函数:
divider = 12
startValues= [0.9,0.3,0.8,0.9]
endValues = [0.6,1.0,0.4]
for v in listRange(startValues,divider):
print(v)
,
我使用np.arange
divider = 12
startValues= [0.9,0.4]
lst = []
for start,stop in zip(startValues,endValues):
if start<stop:
step =(stop-start) / divider
else:
step = -(start - stop) / divider
lst.append(np.arange(start,stop,step))
pd.DataFrame(lst).T
pd.concat([pd.DataFrame(lst).T,pd.DataFrame([endValues])])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。