Усреднение части массива powershell
Привет, я пытаюсь вернуть среднее значение для части массива, когда массив задан как
$multi = New-Object 'object[,]' $nucount,($readings + 2 )
and contains "1,4,2,6,3,4,5,nameofitem, cost of item"
Я хочу получить среднее значение для первых 7 элементов, которые, как я знаю, всегда будут первыми 7 и всегда будут числом. В случае выше число элементов, содержащих число, будет храниться в переменной, называемой $ показаниями. Таким образом, сумма, которую я хочу сделать, это добавить элементы в массив до значения $ readings. а затем устройство по $ показаниям.
Я знаю способы, подобные этому для всего массива
$Avg = ($array | Measure-Object -Average);
$Avg.Average;
или простой цикл и вычисление среднего количества добавлений и делений.
Но есть ли короткий способ сделать это. Я собирался использовать... оператора
$ multi [2,0.. $ чтения], но я получаю сообщение об ошибке
Невозможно преобразовать значение "System.Object []" типа "System.Object []" для ввода "System.Int32".
Любая помощь с этим будет отличной, если она может предоставить короткий код для замены
for (x=1 ; $x -eq $readings ; $X++)
{
$sum = $sum + $multi[2,$x]
{
$avg= $sum/$readings
возможно, это работает так:
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
Вы идете правильно:
$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-мерным, решение является простым:
$multi | select -First 7 | Measure-Object -Average
Попробуй это:
$avg = (0..7 |% { $multi[2,$_] } | Measure-Object -Average)