给定数组$arr = 1,2,3,4
,我想创建一个带有值滑动窗口的新数组。我特别需要一个大小为2的窗口,结果是[[1,2],[2,3],[3,4]]
,但想知道是否有通用的解决方案。
我最终需要计算连续元素之间的差异,以获得[1,1,1,1]
。
答案 0 :(得分:0)
为什么不简单地计算一个具有连续元素之间差异的新数组,如果这实际上是你之后的那些?
$diff = @(for ($i=0; $i -lt $arr.Count-1; $i++) {
$arr[$i+1] - $arr[$i]
})
结果数组将是[1,1,1]
,因为$arr
的最后一个元素没有要比较的相邻元素。
答案 1 :(得分:0)
阵列非常棘手。请参阅下面的滑动窗口的通用解决方案和您的最终需求:
$arr = 1,2,3,4
#create window, notice comma (,)
$result = 1..($arr.Length-1) | % { ,($arr[$_-1], $arr[$_]) }
#show elements
"[0][0]=$($result[0][0])"
"[0][1]=$($result[0][1])"
#ultimate need
1..($arr.Length-1) | % { $arr[$_]-$arr[$_-1] }
看一下about_Arrays文档中的这个片段:
您也可以先输入逗号(,)来获取数组成员 通过管道传递给Get-Member cmdlet的值。逗号制作了 数组数组中的第二项。 Windows PowerShell管道 一次一个数组,Get-Member返回成员 阵列。
,$ a |获取会员
,(1,2,3)|获取会员