当前位置: 首页 > 面试题库 >

计算并打印一列中字符串的平均值

邓卓
2023-03-14
问题内容

我得到了一个带有2列值的.txt文件。它们是2D坐标,因此第一列代表x值,第二列代表z值。不幸的是,有些行具有相同的x值但具有不同的z值。我想计算z值的平均值,以便将单个z与单个x关联。我所拥有的一个样本是:

 435.212 108.894
 435.212 108.897
 435.212 108.9
 435.212 108.903

如您所见,x值435.212与4个不同的z值相关联。我想拥有的是:

435.212 108.8985

其中108.8985是(108.894 + 108.897 + 108.9 + 108.903)/
4的结果。当然,我不想修改其他x和z值,因此结果将是这样的:

之前:

 435.238 108.9
 435.25 108.9
 435.262 108.9
 435.275 108.9
 435.212 108.894 <---
 435.212 108.897<---
 435.212 108.9<---
 435.212 108.903<---

后:

 435.238 108.9
 435.25 108.9
 435.262 108.9
 435.275 108.9
 435.212 108.8985 <---average

与单个x关联的z值的数量可能会有所不同。

我正在使用linux命令行,尽管我可以在linux命令行上使用其他任何程序/实用程序,但我虽然要使用awk来完成这项工作。


问题答案:

这是一种方法awk

$ awk '{a[$1]+=$2; ++b[$1]} END {for (i in a) print i, a[i]/b[i]}' file
435.212 108.899
435.25 108.9
435.238 108.9
435.262 108.9
435.275 108.9

说明

{a[$1]+=$2; ++b[$1]}

  • 将z值(第二列)存储在array中a
  • 将每个x值(第1列)的元素数量存储在array中b

END {for (i in a) print i, a[i]/b[i]}'

  • 打印结果,循环遍历html" target="_blank">数组中存储的值。

要使用其他数字格式(例如4个浮点值),您还可以使用:

printf "%d %.4f\n", i, a[i]/b[i]


 类似资料:
  • 问题内容: 我有一个表,其中包含一列要从中提取信息的JSON数据。具体来说,我只想获取平均值。 我所拥有的例子: 我想要的例子: 关于如何使该查询正常工作的任何建议? 问题答案: 您的json数组被弄乱了,就像@poszcommented一样。必须是: 您的查询也以多种方式扭曲。在第 9.3 页中将像这样工作: SQL提琴。 在即将到来的pg 9.4中, 我们可以使用新的来简化操作(转换中也不太容

  • 问题内容: 我想在同一行上打印列表中的项目。我尝试过的代码: 输出= 我想输出到= 此代码仍在新行上打印我的模具的ASCII艺术表示。我想将其打印在同一行上,以节省空间并在一个屏幕上显示每个玩家的状态。 问题答案: 由于的元素是多行字符串,因此要比这更难。 首先,从每个字符串的开头删除换行符,并确保ASCII图形中的所有行都具有相同的长度。 然后尝试以下 如果您将描述的更改应用于ASCII艺术作品

  • 问题内容: 我正在编写一个程序,该程序将以字符串形式输出唯一字符(通过扫描仪输入)。我创建了一个方法来尝试实现此目的,但我一直在获取不重复的字符,而不是字符串中唯一的一个(或多个)字符。我只想要唯一的字母。 这是我的代码: 这是上面代码的示例输出: 预期的输出将是: 问题答案: 根据所需的输出,当以后重复时,必须替换最初已经添加的字符,因此:

  • 问题内容: 我正在尝试使用下面的代码来计算用户输入的一组值的平均值,并将其显示在中,但它无法正常工作。假设用户输入7、4和5,该程序在应显示5.3时显示平均值。 代码有什么问题? 问题答案: 当您拥有增强的for循环时,为什么还要对索引使用笨拙的for循环?

  • 问题内容: 任何人都知道如何计算这些列之一的平均值(在Linux上)? 例如:mean(第2栏) 问题答案: Awk: 读为: 对于每一行,将第2列添加到变量“总计”中。 在文件末尾,打印“总计”除以记录数。

  • 我试图编写一个方法,使用递归打印字符串的所有排列。现在,我有这样的代码: 它打印出正确的结果,但我试图在不使用循环的情况下解决它,包括第4行中的循环。可能吗?如果是这样,你会如何解决?非常感谢。 我试图添加第三个名为index的参数,并在第5行的递归调用中写入index 1,但没有成功。我认为添加第三个参数是个好主意,我只是不知道如何使用它。