如何在2D numpy数组或文本fi中获得行的平均值

2024-04-29 22:10:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一套我读过的纺织品np.genfromtext格式. 通常它们是标准格式,每测量一个板一个文本文件,每个板有300个孔。这给我提供了以下标题:

headers =['ID','Diameter','Radius','Xpos','Ypos']
#the data looks like
[1,105,53.002,784.023,91.76],
[2,104,51.552,787.023,91.71],
...
[300,104,51.552,787.023,91.71]

现在我有了一套纺织品,一个盘子的每个孔测量一次,而不是两次测量一个孔:

[1,105,53.002,784.023,91.76],
[1,104,53.012,784.024,91.76],
[2,104,51.552,787.023,91.71],
[2,106,51.532,786.823,91.69],
...
[300,104,51.552,787.023,91.71],
[300,104,51.557,785.993,91.6]

或每两个孔中一个,两次:

[1,105,53.002,784.023,91.76],
[1,104,53.012,784.024,91.76],
[3,104,51.552,787.023,91.71],
[3,106,51.532,786.823,91.69],
...
[300,104,51.552,787.023,91.71],
[300,104,51.557,785.993,91.6]

或三个孔中一个,两次:

[1,105,53.002,784.023,91.76],
[1,104,53.012,784.024,91.76],
[4,104,51.552,787.023,91.71],
[4,106,51.532,786.823,91.69],
...
[300,104,51.552,787.023,91.71],
[300,104,51.557,785.993,91.6]

我想要的是一种方法,在每一行中取第一个值“ID”,并在此基础上能够取多少行具有相同ID的平均值,然后继续我的代码的其余部分来分析结果。你知道吗

我通常是这样读取1/1数据的:

dataA=np.genfromtxt(fname,dtype=float, delimiter='\t', names=True)

如果每件纺织品都有一行或第二行的尺寸,那么这条线就很好了:

lines = open( 'filename.txt', "r" ).readlines()[::2]

关于如何获得一个唯一的数组作为一个没有重复ID的输出,理想情况下是具有相同ID但唯一行的行的平均值,有什么想法吗?你知道吗


Tags: theid标题标准格式npheaders平均值
1条回答
网友
1楼 · 发布于 2024-04-29 22:10:06

你可以使用下面的代码。这将不是平均值,但您可以去掉重复的索引值。你知道吗

import numpy as np
a = np.array([[2,8,3,1], [3,2,3,3], [5,3,2,1], [1,4,2,3], [3,6,3,4], [2,4,5,6], [4,1,1,1]])
a[np.unique(a[:,0],return_index=True,axis=0)[1]]

相关问题 更多 >