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

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

列表中點之間的線性插值

列表中點之間的線性插值

泛舟湖上清波郎朗 2022-08-11 20:19:42
我在python中有一個這樣的列表,我想轉(zhuǎn)換成這樣的東西?;旧现皇怯昧斜碇幸延械狞c的插值替換零。有什么想法嗎?[4, 0, 0, 6, 0, 8, 0, 0, 0, 3][4, 4.67, 5.33, 6, 7, 8, 6.75, 5.5, 4.25, 3]
查看完整描述

2 回答

?
慕標(biāo)5832272

TA貢獻(xiàn)1966條經(jīng)驗 獲得超4個贊

使用熊貓的一種方式。系列.插值

import pandas as pd


pd.Series([i  if i else np.nan for i in l]).interpolate().tolist()

輸出:


[4.0,

 4.666666666666667,

 5.333333333333333,

 6.0,

 7.0,

 8.0,

 6.75,

 5.5,

 4.25,

 3.0]


查看完整回答
反對 回復(fù) 2022-08-11
?
四季花海

TA貢獻(xiàn)1811條經(jīng)驗 獲得超5個贊

使用累加從迭代工具,您可以找到每個位置周圍零條紋的開始和結(jié)束索引。然后,使用這些范圍計算每個零位置相對于其起始和結(jié)束非零范圍邊界的線性比率:


from itertools import accumulate


n = [4, 0, 0, 6, 0, 8, 0, 0, 0, 3]

starts = accumulate(range(len(n)),lambda a,b: b if n[b] else a)

ends   = [*accumulate(reversed(range(len(n))),lambda a,b: b if n[b] else a)][::-1]

inter  = [ n[i] or n[s]+(n[e]-n[s])*(i-s)/(e-s) for i,(s,e) in enumerate(zip(starts,ends)) ]


# inter = [4, 4.666666666666667, 5.333333333333333, 6, 7.0, 8, 6.75, 5.5, 4.25, 3]

該列表將包含每個位置的上一個非零值的索引(對于非零值,使用位置本身):starts


[0, 0, 0, 3, 3, 5, 5, 5, 5, 9]

該列表包含下一個非零值的索引ends


[0, 3, 3, 3, 5, 5, 9, 9, 9, 9]

使用zip組合這兩個列表,我們獲得計算中間值所需的所有信息:


                         start  end    range  position        Interpolation 

index value start end    value  value  size   in range     ratio        value

(i)   n[i]  (s)   (e)    n[s]   n[e]   e-s    i-s       (i-s)/(e-s)   see below

 0     4     0     0      4      4      0     0            -----          4

 1     0     0     3      4      6      3     1            0.67          4.67

 2     0     0     3      4      6      3     2            0.33          5.33

 3     6     3     3      6      6      0     0            -----          6

 4     0     3     5      6      8      2     1            0.50          7.00

 5     8     5     5      8      8      0     0            -----          8

 6     0     5     9      8      3      4     1            0.75          6.75

 7     0     5     9      8      3      4     2            0.50          5.50

 8     0     5     9      8      3      4     3            0.25          4.25

 9     3     9     9      3      3      0     0            -----          3

在存在的地方保留非零值,并計算零位置的插值。startValue + (endValue-startValue) x InterpolationRatio


查看完整回答
反對 回復(fù) 2022-08-11
  • 2 回答
  • 0 關(guān)注
  • 172 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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