平均一部分数组PowerShell

时间:2016-08-25 14:51:24

标签: arrays powershell average

嗨我正在尝试返回数组部分的平均值,当数组设置为

$multi = New-Object 'object[,]' $nucount,($readings + 2 )
and contains "1,4,2,6,3,4,5,nameofitem, cost of item"

我想获得前7个元素的平均值,我知道它们总是第7个元素,并且始终是数字。在上面的例子中,包含数字的元素数量将保存在一个名为$ readings的变量中。所以我要做的总和是将数组中的元素加到$ readings值。然后按$读数设备。

我知道整个数组的方法是这样的

$Avg = ($array | Measure-Object -Average);
$Avg.Average;

或简单循环并计算平均购买添加和分配。

但有没有简单的方法来做到这一点。我打算用...运算符

$ multi [2,0 .. $读数],但我收到错误

  

无法转换" System.Object []" type" System.Object []"输入" System.Int32"。

如果它可以提供一个简短的代码来替换

,那么任何帮助都会很棒
for (x=1 ; $x -eq $readings ; $X++) 
{
$sum = $sum + $multi[2,$x]
{
$avg= $sum/$readings

4 个答案:

答案 0 :(得分:4)

你正确的方式:

$readings=7
$array=1,4,2,6,3,4,5,"nameofitem", "cost of item"
$Avg = ($array[0..($readings - 1)] | Measure-Object -Average);
$Avg.Average;

请注意,数组基于零...

答案 1 :(得分:2)

也许它是这样的:

0..$readings | % { $sum += $multi[$_] }

如果不是:

0..[int]$readings | % { $sum += $multi[$_] }

首先你必须启动$ sum

$sum = 0
0..$readings | % { $sum += $multi[$_] }
$avg = $sum/$readings

这是另一个可行的例子:

$arr = 1..50
$readings = 15
$arr[2..$readings]

关于Eldo.Ob

答案 2 :(得分:0)

试试这个:

$avg = (0..7 |% { $multi[2,$_] } | Measure-Object -Average)

答案 3 :(得分:0)

正如您在评论中指出的那样,数组确实是1维的,解决方案很简单:

$multi | select -First 7 | Measure-Object -Average