liu*_*ups 3 wolfram-mathematica
我有一个这样的列表:
{{2002, 4, 10}, 9.61}, {{2002, 4, 11}, 9.53}, {{2002, 4, 12}, 9.58},
Run Code Online (Sandbox Code Playgroud)
我需要查找此列表以找到日期的完全匹配,如果没有匹配,我将在列表中有下一个可用日期,这是我的代码:
Select[history, DateDifference[#[[1]], {2012, 3, 17}] <= 0 &, 1]
Run Code Online (Sandbox Code Playgroud)
但它比寻找完全匹配要慢很多,有没有更快的方法呢?非常感谢你!
确实,这DateDifference
很慢.这可以通过将所有日期转换为"绝对时间"来解决,在Mathematica中表示自1900年1月1日以来经过的秒数.
这是一个例子.这是数据:
data = {AbsoluteTime[#1], #2} & @@@
FinancialData["GOOG", {{2010, 1, 1}, {2011, 1, 1}}];
Run Code Online (Sandbox Code Playgroud)
如果没有,我们正在寻找这个日期或下一个日期:
date = AbsoluteTime[{2010, 8, 1}]
Run Code Online (Sandbox Code Playgroud)
检索它的一种方法是:
dt[[1 + LengthWhile[dt[[All, 1]], # < date &]]]
Run Code Online (Sandbox Code Playgroud)
您将在此问题的答案中找到其他方法,包括已经实现的二进制搜索.
归档时间: |
|
查看次数: |
962 次 |
最近记录: |