第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

通過numpy.mean分組

通過numpy.mean分組

犯罪嫌疑人X 2021-03-29 18:10:43
如何計(jì)算下面每個(gè)工人的均值?以下是我的示例NumPy ndarray。第0列是工作人員編號(hào),第1列是緯度,第2列是經(jīng)度。我想計(jì)算每個(gè)workerid的平均緯度和經(jīng)度。我想保留所有使用NumPy(ndarray),而不轉(zhuǎn)換為熊貓。import numpyfrom scipy.spatial.distance import cdist, euclideanimport itertoolsfrom itertools import groupbyclass WorkerPatientScores:    '''    I read from the Patient and Worker tables in SchedulingOptimization.    '''    def __init__(self, dist_weight=1):        self.a = []        self.a = ([[25302, 32.133598100000000, -94.395845200000000],                   [25302, 32.145095132560200, -94.358041585705600],                   [25302, 32.160400000000000, -94.330700000000000],                   [25305, 32.133598100000000, -94.395845200000000],                   [25305, 32.115095132560200, -94.358041585705600],                   [25305, 32.110400000000000, -94.330700000000000],                   [25326, 32.123598100000000, -94.395845200000000],                   [25326, 32.125095132560200, -94.358041585705600],                   [25326, 32.120400000000000, -94.330700000000000],                   [25341, 32.173598100000000, -94.395845200000000],                   [25341, 32.175095132560200, -94.358041585705600],                   [25341, 32.170400000000000, -94.330700000000000],                   [25376, 32.153598100000000, -94.395845200000000],                   [25376, 32.155095132560200, -94.358041585705600],                   [25376, 32.150400000000000, -94.330700000000000]])        ndarray = numpy.array(self.a)        ndlist = ndarray.tolist()        geo_tuple = [(p[1], p[2]) for p in ndlist]        nd1 = numpy.array(geo_tuple)        mean_tuple = numpy.mean(nd1, 0)        print(mean_tuple)上面的輸出是:[32.14303108 -94.36152893]
查看完整描述

2 回答

?
30秒到達(dá)戰(zhàn)場(chǎng)

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)}


查看完整回答
反對(duì) 回復(fù) 2021-04-09
?
臨摹微笑

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)行矢量化


查看完整回答
反對(duì) 回復(fù) 2021-04-09
  • 2 回答
  • 0 關(guān)注
  • 362 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)