TimeSeriesMap[f,tes]
创建一个新的时间序列,其中对于时间或事件序列数据 tes 的每一对 {t,x},都生成时间-数值对 {t,f[x]}.
TimeSeriesMap[{ncom1f1,ncom2f2,…},tes]
构造一个新的时间序列,具有相同的时间戳与分量 ncomi,每个分量通过将函数 fi 应用于 tes 的值而获得.
TimeSeriesMap
TimeSeriesMap[f,tes]
创建一个新的时间序列,其中对于时间或事件序列数据 tes 的每一对 {t,x},都生成时间-数值对 {t,f[x]}.
TimeSeriesMap[{ncom1f1,ncom2f2,…},tes]
构造一个新的时间序列,具有相同的时间戳与分量 ncomi,每个分量通过将函数 fi 应用于 tes 的值而获得.
更多信息
- TimeSeriesMap 通常用于从现有分量派生新分量,例如通过将两个分量相除得到比率.
- 时间或事件序列数据的可能形式 tes 包括:
-
TimeSeries[…] 连续的时间排序采样数据 EventSeries[…] 带有值的时间事件集合 TemporalData[…] 由时间-数值对构成的一条或多条路径 {{t1,x1},{t2,x2},…} 时间-数值对列表 {x1,x2,…} 从 0 开始的隐含整数时间对应的值列表 - 时间序列 tes 中的分量 "com" 可以作为映射函数 f 的参数来使用,语法为 f[…,#com,…]&. »
- 对于没有命名分量的简单时间序列,可以使用 f[…,#,…]& 或 f[…,#Value,…]& 来访问其值. »
- 对于任何时间序列,都可以使用 #Timestamp 将时间戳作为参数传递给映射函数 f.
- TimeSeriesMap[cspec,tes] 实际上等价于 Head[tes][ConstructColumns[Tabular[tes],cspec],{ tes["Times"]}]. »
- 对于具有多个路径的 TemporalData 对象,TimeSeriesMap 会按路径逐一处理.
范例
打开所有单元 关闭所有单元基本范例 (2)
TimeSeries[{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4], Subscript[x, 5]}, {1}]TimeSeriesMap[f, %]%//NormalTimeSeries[{"a" -> {11, 17, 13}, "b" -> {"cat", "dog", "fox"}, "c" -> {.1, .5, .9}}, {0}]TimeSeriesMap[#a + #c&, %]%//Tabular范围 (16)
基本用途 (6)
TimeSeries[{23, 34, 56}, {0}]TimeSeriesMap[f, %]//NormalTimeSeries[Array[x, {2, 3}], {0}]TimeSeriesMap[f, %]//Normalts = TimeSeries[{23, 34, 56}, {0}, ComponentKeys -> {"a"}]TimeSeriesMap[f, ts]//TabularTimeSeriesMap[f[#a]&, ts]//Tabularts = TimeSeries[{"a" -> {11, 17, 13}, "b" -> {"cat", "dog", "fox"}, "c" -> {.1, .5, .9}}, {0}]TimeSeriesMap[f[#]&, ts]//NormalTimeSeriesMap[f[#Timestamp]&, ts]//NormalTimeSeriesMap[f[#[[3]]]&, ts]//NormalTimeSeriesMap[f[#c]&, ts]//NormalTimeSeriesMap[f[#c, #b]&, ts]//NormalToTabular[<|"name" -> RandomWord[3], "integers" -> RandomInteger[10, {3, 2}], "reals" -> RandomReal[1, {3, 4}]|>, "Columns"]ts = TimeSeries[%]TimeSeriesMap[f, ts]//NormalTimeSeriesMap[f[#integers[[1]], #reals[[ ;; 2]]]&, ts]//Tabular使用 TimeSeriesMap 求向量值时间序列的每个数值的范式:
α = {{.2, .1}, {-.3, .2}};
β = {{.2, .5}, {-.2, .9}};
Σ = {{1, 0}, {0, .3}};
sample = RandomFunction[ARMAProcess[{α}, {β}, Σ], {1, 10 ^ 2}];norms = TimeSeriesMap[Norm, sample]ListPlot[norms, Filling -> 0]数据类型 (7)
v = RandomInteger[{-10, 10}, 10]TimeSeriesMap[f, v]把时间数值对的列表设置极值为 Missing:
data = {{"2005", 1}, {"2006", -1}, {"2007", 3}, {"2008", 6}, {"2009", -2}, {"2010", 4}, {"2011", 5}, {"2012", 9999}, {"2013", 4}, {"2014", 2}};clip = TimeSeriesMap[If[# > 10, Missing[], #]&, data]DateListPlot[clip, GridLines -> {True, False}]对 TimeSeries 的数值加倍:
ts = TimeSeries[TimeEventSeries`TimestampData[Association["UniformlySpacedQ" -> True, "Count" -> 100,
"Endpoints" -> TabularColumn[Association["Data" -> {{0, 99}, {}, None},
"ElementType" -> "Integer64"]], "MinimumTimeIncrement" -> 1, "Caller ... 8, -5.864937981765857,
-6.27785271209235, -5.841962111797332}, {}, None}, "ElementType" -> "Real64"]],
Association["ResamplingMethod" -> {"Interpolation", InterpolationOrder -> 1},
"TimeWindow" -> Automatic, "MetaInformation" -> None]];TimeSeriesMap[2 * #&, ts]2 * tsListLinePlot[{ts, %}]构造一个具有两条路径的 TemporalData:
path1 = {{0, 12.1}, {1, 13.2}, {2, 15.0}};
path2 = {{.3, 12.3}, {1.1, 3.4}, {1.7, 4.5}};td = TemporalData[{path1, path2}]TimeSeriesMap 独立作用于各条路径:
TimeSeriesMap[f, td]//NormalTimeSeriesMap[Round, td]//Normal将 TemporalData 中的路径平移:
td = TemporalData[Automatic, {{{0.8046670011447656, 0.6424816687160839, -0.3687580957637058,
0.4628481191016882, 0.6513760827865932, 0.19165543283623954, 0.30464311463325267,
-0.9822712429552825, -1.0167795954508363, -1.179808617121842, 0.7468 ... -15.95818965999289, -15.432785308593996, -16.456943797427243,
-17.39684387275391, -18.043191111487896, -17.87617876899845, -17.2137849514934,
-17.84832779928046}}, {{1, 100, 1}}, 3, {"Continuous", 3}, {"Discrete", 1}, 1, {}}, False, 10.];p1 = ListLinePlot[td, PlotStyle -> RGBColor[0.368417, 0.506779, 0.709798]]TimeSeriesMap[# + 20&, td]td + 20Show[ListLinePlot[%, PlotStyle -> RGBColor[0.880722, 0.611041, 0.142051]], p1, PlotRange -> All]通过交替彩色圆盘表示 EventSeries 中的事件:
es = EventSeries[RandomChoice[{1, 5} -> {1, 0}, 50]]ListPlot[es, Filling -> Axis]rg[c_, e_] := If[e == 0, c, RGBColor[0, c[[3]], c[[2]]]]c = RGBColor[0, .5, 1];i = 0;
disks = TimeSeriesMap[{c = rg[c, #], Disk[{++i / 15, 0}]}&, es]Graphics[Normal[disks["Values"]]]在一个含有数量的时间序列上加上 Quantity:
ts = TimeSeries[Quantity[{0, 16, 9, 3, 7, 2, 17, 10, 6, 12}, "Meters"]];res = Quantity[10, "Meters"] + tsres//NormalListLinePlot[{ts, res}, PlotLegends -> {"ts", "shifted ts"}, Filling -> Axis, AxesLabel -> Automatic]分量键作为函数参数 (3)
ts = TimeSeries[{"a" -> {11, 17, 13}, "b" -> {"cat", "dog", "fox"}, "c" -> {.1, .5, .9}}, {0}]TimeSeriesMap[Function[f[#c]], ts]TimeSeriesMap["new" -> Function[f[#c]], ts]TimeSeriesMap[{"a", "b", "new" -> Function[f[#c]], "c"}, ts]ts = TimeSeries[{"a" -> {11, 17, 13}, "b" -> {"cat", "dog", "fox"}, "c" -> {.1, .5, .9}}, {Today}]TimeSeriesMap[fun[#Timestamp]&, ts]//Normalts = TimeSeries[{.34, .56, .19}, {0}]TimeSeriesMap[f, ts]TimeSeriesMap[f[#Value]&, ts]% === %%TimeSeriesMap[f[#Value] + g[#Timestamp]&, ts]应用 (9)
基本应用 (2)
ts = EntityValue[Entity["HistoricalCountry", "RomanEmpire"], Dated["Polygon", All]]TimeSeriesMap[GeoArea, ts]DateListPlot[%, TargetUnits -> "RomanCommonLeugae" ^ 2][image]DateListPlot[data, PlotLegends -> Rest[ColumnKeys[data]]]TimeSeriesMap[#Finland / #Sweden&, data]DateListPlot[%, PlotLabel -> "Finland/Sweden"]自然现象 (3)
ts = TimeSeries[TimeEventSeries`TimestampData[Association["UniformlySpacedQ" -> True, "Count" -> 1153,
"Endpoints" -> TabularColumn[Association[
"Data" -> {2, {{{1748736000000, 1749081600000}, {}, None}}, None},
"ElementType" -> TypeSpe ... arInterpolation",
"LongFlux" -> "LinearInterpolation"], "TimeWindow" ->
DateInterval[{{{2025, 6, 1, 0, 0, 0.}, {2025, 6, 5, 0, 0, 0.}}}, "Instant", "Gregorian",
"-05:00"], "MetaInformation" -> Association["Name" -> "SolarXRayFlux"]]];ColumnKeys[ts]ListLogPlot[ts, Joined -> True]TimeSeriesMap[Function[#LongFlux / #ShortFlux], ts]ListLinePlot[%, PlotRange -> All]data = WeatherData[{"Champaign", "Illinois"}, "WindSpeed", {2014, 5}]wd = TransformMissing[data, "Interpolation"]使用 TimeSeriesMap 构建一台 1.5 MW 风力涡轮机功率输出的时间序列:
if = InterpolatingFunction[{{0., 30.}}, {5, 7, 0, {61}, {4}, 0, 0, 0, 0, Automatic, {}, {}, False},
{{0., 0.5, 1., 1.5, 2., 2.5, 3., 3.5, 4., 4.5, 5., 5.5, 6., 6.5, 7., 7.5, 8., 8.5, 9., 9.5, 10.,
10.5, 11., 11.5, 12., 12.5, 13., 13.5, 14., 14.5, ... 1477., 1494., 1500., 1500., 1500., 1500., 1500., 1500., 1500., 1500., 1500., 1500., 1500.,
1500., 1500., 1500., 1500., 1500., 1500., 1500., 1500., 1500., 1500., 1500., 1500., 1500., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0.}}, {Automatic}];
power[s_] := Quantity[if[QuantityMagnitude[s, "m/s"]], "Kilowatts"];output = TimeSeriesMap[power, wd]ma = MovingMap[Mean, output, {Quantity[1, "Day"]}];DateListPlot[ma, PlotTheme -> {"Detailed", "ThinLines"}, FrameLabel -> Automatic, ImageSize -> 300, Filling -> Bottom]FindAstroEvent["MarchEquinox", DateRange[DateObject@{1800}, {2599}, "Year"]]es = TimeSeriesMap[DateValue[#, "DayExact"]&, %]MinMax[es]TimeObject[24FractionalPart[First[%]]]展示它们如何逐年漂移,以及闰日如何在 400 年周期中需要不同处理:
DateListPlot[es, Joined -> False, FrameTicks -> {{{{19, "Mar 19 00:00"}, {19.5, "Mar 19 12:00"}, {20, "Mar 20 00:00"}, {20.5, "Mar 20 12:00"}, {21, "Mar 21 00:00"}, {21.5, "Mar 21 12:00"}}, None}, {Automatic, None}}]金融 (1)
prices = TemporalData[TimeSeries, {{{26.97, 26.65, 26.55, 27.52, 27.54, 27.41, 26.42, 26.34, 26.68, 28.53,
28.03, 27.9, 27.69, 28.1, 28.73, 28.39, 29.17, 30.08, 30.78, 31.28, 30.91, 30.8, 31.73, 32.,
31.56, 31.96, 33.04, 34.01, 33.56, 35.79, 36.21 ... 9.85, 39.93, 39.98}},
{TemporalData`DateSpecification[{2013, 1, 2, 0, 0, 0.}, {2013, 11, 27, 0, 0, 0}, {1, "Week"}]},
1, {"Continuous", 1}, {"Discrete", 1}, 1,
{ResamplingMethod -> {"Interpolation", InterpolationOrder -> 1}}}, True, 10.1];
currentMaximumPrices = Block[{currMax = prices["FirstValue"]}, TimeSeriesMap[(currMax = Max[currMax, #])&, prices]]DateListPlot[{prices, currentMaximumPrices}, PlotLegends -> {"Prices", "CurrentMaximumPrices"}]经济学 (2)
data = Block[...]Tabular[data]fun[g_] := Function[#[ExtendedKey["LaborForce", g]] * Normal[#[ExtendedKey["UnemploymentRate", g]]]]unemployment = TimeSeriesMap[{"FemaleUnemployed" -> fun["Female"], "MaleUnemployed" -> fun["Male"]}, data]DateListPlot[unemployment, PlotLegends -> {"Female", "Male"}]total = TimeSeriesMap[Total, unemployment]DateListPlot[{unemployment, total}, PlotLegends -> LineLegend[...]]ts = TimeSeries[TimeEventSeries`TimestampData[Association["UniformlySpacedQ" -> False,
"Timestamps" -> TabularColumn[Association[
"Data" -> {163, {{NumericArray[{14245, 14276, 14304, 14335, 14365, 14396, 14426, 14457,
14488, 14518, ... ",
"Other" -> "LinearInterpolation"], "TimeWindow" ->
DateInterval[{{{2009, 1, 1, 0, 0, 0.}, {2022, 7, 1, 0, 0, 0.}}}, "Day", "Gregorian", None, "UT",
Automatic], "MetaInformation" -> Association["Name" -> "WebBrowsersMarketShare"]]];ts["FirstValue"]//NormalTimeSeriesMap[Keys@TakeLargest[#, 3]&, ts]DateListPlot[%, ScalingFunctions -> NominalScale[Automatic], PlotLegends -> {"first", "second", "third"}]随机过程 (1)
使用 TimeSeriesMap 计算 ARProcess 的协方差矩阵的行列式:
cov = CovarianceFunction[ARProcess[{{{1 / 3, 1 / 2}, {-1 / 4, 1 / 2}}}, {{1, 1 / 3}, {1 / 3, 1}}], {10}];det = TimeSeriesMap[Det, cov]det["Values"]//Normal%//N属性和关系 (5)
TimeSeriesMap[f[#Timestamp]&, {x, y, z}]//Normalts = TimeSeries[{7, 9, 16}, {1}];TimeSeriesMap[# + c&, ts]["Path"](ts + c)["Path"]simpleTS = TimeSeries[{3.5, 6.7, 8.4}, {11}]TimeSeriesMap[f[#]&, simpleTS]//NormalcompTS = RenameColumns[simpleTS, "Value" -> "a"]TimeSeriesMap[f[#]&, compTS]//NormalTimeSeriesMap[f[#a]&, compTS]//Normalts = TimeSeries[{"a" -> {11, 17, 13}, "b" -> {"cat", "giraffe", "fox"}, "c" -> {.1, .5, .9}}, {0}]cspec = {"s" -> Function[Sqrt[#a]], "e" -> Function[Entropy[#b]]};TimeSeriesMap[cspec, ts]也可以通过先转换为 Tabular、使用 ConstructColumns,再转换回来获得此结果:
ConstructColumns[Tabular[ts], cspec]TimeSeries[%, {ts["Times"]}]TimeSeriesMap[f,ts] 等价于 TimeSeriesMapThread[Function[f[#2]],ts]:
ts = TimeSeries[{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4], Subscript[x, 5]}, {1}]res = TimeSeriesMap[f, ts]Normal[res]res === TimeSeriesMapThread[f[#2]&, ts]可能存在的问题 (2)
键 "Timestamp" 不能用作新的分量键:
ts = TimeSeries[{11, 17, 13}, {Today}]TimeSeriesMap["Timestamp" -> f, ts]
TimeSeriesMap["time" -> f, ts]ts = TimeSeries[{3.5, 6.7, 8.4}, {11}, {"a"}]TimeSeriesMap[f[#Value]&, ts]使用 # 以访问整个关联,或使用 #a 访问分量 "a" 的值:
TimeSeriesMap[f[#]&, ts]//NormalTimeSeriesMap[f[#a]&, ts]//Normal巧妙范例 (2)
ts = TemporalData[TimeSeries,
{{{{1.37, 64.97, 26.85, 2.79, 3.07, 0.01, 0, 0, 0, 0.12, 0.03, 0.01, 0, 0.01, 0, 0, 0, 0, 0, 0.08,
0, 0, 0, 0, 0.15, 0, 0, 0, 0, 0, 0.27, 0.04, 0.02, 0, 0, 0.02, 0, 0, 0, 0.2},
{1.5, 63.98, 27.66, 2.83, 3.09, 0 ... "Samsung", "AOL", "SeaMonkey", "Openwave", "Whale Browser", "Phantom", "SonyEricsson",
"Pale Moon", "Obigo", "Jasmine", "Other"}, ResamplingMethod ->
{"Interpolation", InterpolationOrder -> 1}, ValueDimensions -> 40}}, True, 314.1];ts["FirstValue"]ts["MetaInformation"]best7ts = TimeSeriesMap[With[{pos = Reverse@TakeLargest[# -> "Index", 7]}, {#[[pos]], ts["MetaInformation"][[pos]]}]&, ts];Animate[BarChart[First[best7ts[t]], BarOrigin -> Left, PlotLabel -> DateObject[t, "Month"], PlotRange -> {0, 75}, AxesLabel -> "%", ChartLabels -> Placed[Last[best7ts[t]], After], ChartStyle -> "DarkRainbow"], {t, ts["Dates"]}, AnimationRate -> 3, AnimationRunning -> False, SaveDefinitions -> True]start = DateObject[{2025, 1, 1}, "Day"];
end = DateObject[{2025, 12, 31}, "Day"];
range = DateRange[start, end, "Day"];rises = Sunrise[Entity["City", {"London", "GreaterLondon", "UnitedKingdom"}], range, TimeZone -> Entity["City", {"London", "GreaterLondon", "UnitedKingdom"}]]sets = Sunset[Entity["City", {"London", "GreaterLondon", "UnitedKingdom"}], range, TimeZone -> Entity["City", {"London", "GreaterLondon", "UnitedKingdom"}]]rises["FirstValue"]riseHour = TimeSeriesMap[DateValue[#, "HourExact"]&, rises]setHour = TimeSeriesMap[DateValue[#, "HourExact"]&, sets]ListPlot[Transpose[{riseHour["Values"], setHour["Values"]}], AxesLabel -> {"sunrise", "sunset"}, PlotStyle -> PointSize[Small], ColorFunction -> "Rainbow"]文本
Wolfram Research (2014),TimeSeriesMap,Wolfram 语言函数,https://reference.wolfram.com/language/ref/TimeSeriesMap.html (更新于 2026 年).
CMS
Wolfram 语言. 2014. "TimeSeriesMap." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2026. https://reference.wolfram.com/language/ref/TimeSeriesMap.html.
APA
Wolfram 语言. (2014). TimeSeriesMap. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/TimeSeriesMap.html 年
BibTeX
@misc{reference.wolfram_2026_timeseriesmap, author="Wolfram Research", title="{TimeSeriesMap}", year="2026", howpublished="\url{https://reference.wolfram.com/language/ref/TimeSeriesMap.html}", note=[Accessed: 13-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_timeseriesmap, organization={Wolfram Research}, title={TimeSeriesMap}, year={2026}, url={https://reference.wolfram.com/language/ref/TimeSeriesMap.html}, note=[Accessed: 13-November-2026]}