将文本转换为矩阵或 numpy 数组并取平均值

时间:2021-05-01 14:19:09

标签: python python-3.x numpy numpy-ndarray

需要将下面的文字转化为矩阵并求平均值。

stat.txt //find the average of multiple occurrence
Node FC NL  SSD    FC NL   SSD FC NL SSD
   0  1  0    0 2500   0 67200  0  0   0
   1 16  0    0 25600  0 67200  0  0   0
   
Node FC NL  SSD    FC NL   SSD FC NL SSD
   0  1  0    0 35600  0 7200  0  0   0
   1  6  0    0 35600  0 7200  0  0   0

FC NL SSD 都是 NODE0 和 NODE1 的值。 这些值需要相加并求平均值。由于文本块出现了 2 次。我需要添加和平均并以与以下相同的格式显示:(但使用平均阀)

结果应该是这样的:-

Node FC NL  SSD    FC NL   SSD FC NL SSD
   0  ## Average values corresponding to NODE0 ##
   1 ## Average values corresponding to NODE1 ##

我尝试打开文本和格式:-

with open('stat.txt', 'r') as f:
    contents = f.read().split()

这给了我一个列表:-

 ['Node', 'FC', 'NL', 'SSD', 'FC', 'NL', 'SSD', 'FC', 'NL', 'SSD', '0', '1', '0', '0', '25600', .....

array = np.array(contents)
#print(array)
shape = (10, 6)
res = np.shape(array)
print(res)

使用上面的代码,我试图将其格式化为矩阵以添加和平均交替行。但无法获得正确的格式。 有什么更好的方法吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

通过以下方式创建列表:

  • 创建一个空列表
  • 遍历文件的行
  • 如果一行以 'Node' 开头,则跳过它
  • 如果没有,拆分行并将结果列表中的项目转换为数字
    • 将此列表附加到您在开头创建的列表中
  • 当文件迭代停止时,将列表列表提供给 numpy.array