【问题标题】:Mathmatically adding arrays in PowerShell在 PowerShell 中以数学方式添加数组
【发布时间】:2018-02-13 03:58:51
【问题描述】:

我有两个数组需要相加(以及后面的减法和乘法)。第一个标记为 $agrp,它包含从 Excel 工作表的某个范围中提取的数据。我也有 $bgrp 从同一个 Excel 表中提取另一个范围。我想以数学方式将它们加在一起。到目前为止,我所能做的就是让它们组合成一个新数组(现在是原来的两倍)。有什么建议?

【问题讨论】:

  • 我想把它变成一个名为 $egrp 的值。我已经完成了 $agrp + $bgrp 将它们加在一起。我还尝试了一个带有计数的 for 循环。 count 的问题在于它只计算数组中元素的数量(在本例中为 42)。但是,每个元素都是唯一的($agrp 的计数为 1,2,3,4),因此会引发错误 - “您无法使用索引 [#] 对二维数组进行索引”,其中数字是它失败的元素开。
  • 这可能是一个愚蠢的问题,但为什么不利用专门设计的程序,比如 Excel?为什么要将东西提取到 PowerShell 中,这样它就可以做它不适合做的事情?
  • 我已经在 excel 中完成了,但现在必须在 powershell 中重复该过程。这是愚蠢的重复,但它是由非 cs 老师教的 cs 课,因此我如此卡住。但是,如果我无法弄清楚代码,我可能会回到一个新的 Excel 工作簿并使用内置函数,然后重新提取该数据。谢谢你的帮助伙伴,我不会想到这一点。

标签: arrays excel powershell


【解决方案1】:

如果你想独立处理你的数组,你可以使用这个:

$egrp = New-Object System.Collections.ArrayList

for ($i=0; $i -lt $agrp.Count; $i++){
    $egrp += $agrp[$i] + $bgrp[$i]
} 

虽然我不喜欢它,因为它不是很“powershell”。因此,如果您需要直接从 csv 中提取它,我建议您这样做:

$egrp = New-Object System.Collections.ArrayList

Import-Csv $csv_path | 
%{[int]$_.agrp + [int]$_.bgrp} | 
%{$egrp += $_}

请注意,$_.agrp$_.bgrp 代表 csv 列的名称(在第一行)。 $csv_path是csv的字符串路径或文件对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 2021-06-29
    • 1970-01-01
    • 2015-06-11
    • 1970-01-01
    相关资源
    最近更新 更多