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

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

為使用矩陣的先前值的 Matlab 矩陣操作查找等效的 LINQ 查詢

為使用矩陣的先前值的 Matlab 矩陣操作查找等效的 LINQ 查詢

C#
ITMISS 2022-08-20 15:17:46
我想使用 LINQ 簡化 C# 中 List 的生成。我的目標(biāo)是使用另一個(gè) List 的值使用操作填充新 List。我愿意使用第三方庫,如Deedle或MathNet,如果它們可以重現(xiàn)與我當(dāng)前解決方案類似的性能。在 Matlab 中實(shí)現(xiàn)目標(biāo)的等效方法是使用簡單的矩陣運(yùn)算和點(diǎn)運(yùn)算,如以下代碼所示:dailyRetList = (dailyCloseList(2:end) - dailyCloseList(1:end-1))./dailyCloseList(1:end-1)這將創(chuàng)建一個(gè)新數(shù)組,迭代并為每個(gè)元素從中減去,然后將結(jié)果除以,最后將值推送到新創(chuàng)建的數(shù)組。dailyCloseListdailyCloseList[i-1]dailyCloseList[i]dailyCloseList[i-1]我目前解決這個(gè)問題的解決方案是:var dailyCloseList = new List<double>{11.8d, 11.7d, 13d, 12.6d, 15d};var dailyRetList = new List<double>();for (var i = 1; i < dailyCloseList.Count; i++){     dailyRetList.Add((dailyCloseList[i] - dailyCloseList[i-1])/dailyCloseList[i-1]);}
查看完整描述

3 回答

?
尚方寶劍之說

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

你可以在 Linq 中使用它:

var m = Enumerable.Range(1, dailyCloseList.Count - 1)
                .Select(i => (dailyCloseList[i] - dailyCloseList[i - 1])/ dailyCloseList[i - 1])
                .ToList();

檢查異??偸怯袔椭?。DivideByZero


查看完整回答
反對 回復(fù) 2022-08-20
?
慕姐8265434

TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊

另一種選擇是使用:Zip

var change = dailyCloseList.Zip(dailyCloseList.Skip(1))
                           .Select((x,y) => (y - x)/x)
                           .ToList();


查看完整回答
反對 回復(fù) 2022-08-20
?
藍(lán)山帝景

TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊

我認(rèn)為最林克的方式是這個(gè)


var dailyRetList = dailyCloseList

    .ConsecutivePairs((a, b) => (b - a) / a)

    .ToList();

當(dāng)然,你必須定義函數(shù)(曾經(jīng)在某個(gè)地方)。但與 Guaravsa 解決方案不同,它適用于 ,因此不需要直接索引訪問。但這一切都是有代價(jià)的。您最初的簡單循環(huán)比任何使用枚舉的解決方案快3倍左右(順便說一句,您應(yīng)該在開始時(shí)預(yù)先分配List以獲得最佳性能)。ConsecutivePairsIEnumerable


函數(shù)實(shí)現(xiàn),只是為了完整性:


public static IEnumerable<Q> ConsecutivePairs<T, Q>(this IEnumerable<T> sequence, Func<T, T, Q> selector)

{

    using(var en = sequence.GetEnumerator())

    {

        if (!en.MoveNext()) { yield break; }

        T prev = en.Current;

        while (en.MoveNext())

        {

            yield return selector(prev, en.Current);

            prev = en.Current;

        }

    }

}


查看完整回答
反對 回復(fù) 2022-08-20
  • 3 回答
  • 0 關(guān)注
  • 129 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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