2 回答
TA贡献1828条经验 获得超6个赞
您可以使用一些创造性的数组切片和where函数来解决此问题。
means = {}
for i in numpy.unique(a[:,0]):
tmp = a[numpy.where(a[:,0] == i)]
means[i] = (numpy.mean(tmp[:,1]), numpy.mean(tmp[:,2]))
切片[:,0]是从2d数组中提取列(在本例中为第一列)的便捷方法。为了获得均值,我们从第一列中找到唯一的ID,然后针对每个ID,使用提取相应的行where,然后合并。最终结果是元组的字典,其中键是ID,值是包含其他两列平均值的元组。当我运行它时,它会产生以下命令:
{25302.0: (32.1463644108534, -94.36152892856853),
25305.0: (32.11969774418673, -94.36152892856853),
25326.0: (32.12303107752007, -94.36152892856853),
25341.0: (32.17303107752007, -94.36152892856853),
25376.0: (32.15303107752007, -94.36152892856853)}
TA贡献1982条经验 获得超2个赞
使用workerid和列表理解将是:
a=np.array(self.a)
ids=np.unique(a[:,0]) #array of unique ids
pos_mean=[np.mean(a[a[:,0]==i, 1:], axis=0) for i in ids]
但是考虑到似乎总是有3次连续测量,应该有一个相对简单的方法对其进行矢量化
添加回答
举报