亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

每 2 個 Numpy 元素的加權平均值

每 2 個 Numpy 元素的加權平均值

翻閱古今 2021-12-09 10:23:32
假設我有這個數組: [4, 3, 2] 我想得到每 2 個元素的加權平均值。因此,我會得到一個看起來像這樣的數組(假設權重是 [0.6, 0.4, 0.6]: [3.6, 2.4]知道如何使用大型陣列(5000)來做到這一點嗎?非常感謝!
查看完整描述

3 回答

?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

你可以看看numpy roll()方法。


import numpy as np

weight = 0.5

x = np.array([4, 3, 2])

(x*weight + np.roll(x, -1)*(1-weight))[:-1]

輸出:


array([ 3.5,  2.5])

Roll 方法將移動您的原始數組,通過將移動的數組添加到原始數組并將每個數組乘以各自的權重(權重總和為 1),您將獲得加權平均值。所有這些都是向量化操作,這將使執行非常流暢。


你可以玩弄weight使第一個或第二個元素產生更大的影響;


查看完整回答
反對 回復 2021-12-09
?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

對于更一般的結果,我認為您應該重新歸一化權重,使每對的總和為 1。這意味著每個權重與其之前或之后的權重配對時可能具有不同的重新歸一化值。


假設這weights是具有權重的 numpy 數組:


normalized_weights = np.column_stack((we[:-1], we[1:]))

for i in range(corrwe.shape[0]):

    normalized_weights[i][0] = normalized_weights[i][0] / (weights[i] + weights[i+1])

    normalized_weights[i][1] = normalized_weights[i][1] / (weights[i] + weights[i+1])

normalized_weights是一個 N x 2 矩陣,其中 N 等于len(weights)-1。每行包含一對總和為 1 的權重。


例如,如果weights = [0.89779725 0.04136924 0.2877373 0.29153165 0.97000642 0.74452243 0.5714133 0.25224212 0.09493403 0.11448254]thennormalized_weights是:


[[0.95595112 0.04404888]

 [0.12570165 0.87429835]

 [0.49672488 0.50327512]

 [0.23109223 0.76890777]

 [0.56575684 0.43424316]

 [0.56577416 0.43422584]

 [0.69375285 0.30624715]

 [0.72655372 0.27344628]

 [0.45332625 0.54667375]]

現在,如果x是您的數據數組(與 相同的長度weights),您可以通過執行以下操作獲得加權的中間點:


weighted_middle_x = x[:-1]*normalized_weights[...,0] + x[1:]*normalized_weights[...,1]


查看完整回答
反對 回復 2021-12-09
?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

給定兩個變量:


import numpy as np


elements = np.array([4, 3, 2])

weights = np.array([0.6, 0.4, 0.6])

您將兩個數組相乘并將它們保存在一個變量中,只是為了便于閱讀:


 a = elements * weights

你做總結。使用該函數,np.roll我們將創建變量 的副本a,但移動了一個位置:


 res = a + np.roll(a, -1)

最后,我們忽略最后一個元素:


 res = res[0:-1]


查看完整回答
反對 回復 2021-12-09
  • 3 回答
  • 0 關注
  • 266 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號