2 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以使用一些創(chuàng)造性的數(shù)組切片和where函數(shù)來解決此問題。
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數(shù)組中提取列(在本例中為第一列)的便捷方法。為了獲得均值,我們從第一列中找到唯一的ID,然后針對(duì)每個(gè)ID,使用提取相應(yīng)的行where,然后合并。最終結(jié)果是元組的字典,其中鍵是ID,值是包含其他兩列平均值的元組。當(dāng)我運(yùn)行它時(shí),它會(huì)產(chǎn)生以下命令:
{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貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊
使用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次連續(xù)測(cè)量,應(yīng)該有一個(gè)相對(duì)簡(jiǎn)單的方法對(duì)其進(jìn)行矢量化
添加回答
舉報(bào)