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

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

帶索引的嵌套循環(huán)

帶索引的嵌套循環(huán)

米脂 2022-10-25 15:38:33
我正在嘗試解決以下簡(jiǎn)化問題。我有一個(gè)包含數(shù)據(jù)的數(shù)組和兩個(gè)存儲(chǔ)了開始和結(jié)束索引的數(shù)組。我想要的是將位于索引之間的數(shù)據(jù)集的值加倍(因此介于并包括 start[0]、end[0] 和 start[1]、end[1] 等)。我嘗試了一個(gè)嵌套循環(huán),如下所示:data = np.array([0,1,2,8,4,5,6,5,4,5,6,7,8])start = np.array([0,5,7])end = np.array([3,6,9])new_data = np.zeros(len(data))for i in range(len(start)):   for j in range(len(data)):       if (j >= start[i]) & (j <= end[i]):            new_data[j] = data[j]*2       else:            new_data[j] = data[j]結(jié)果應(yīng)該是 [0,2,4,16,4,10,12,10,8,10,6,7,8],但代碼返回: [ 0. 1. 2. 8. 4. 5 . 6. 10. 8. 10. 6. 7. 8.]只有最后一個(gè)索引之間的部分是正確的。任何想法為什么?如果我想將不滿足 if 語句的值增加三倍怎么辦?
查看完整描述

3 回答

?
滄海一幻覺

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

您重復(fù)分配給 new_data,覆蓋以前的更改。

IE:

new_data[j] = data[j]*2 # won't work
data[j] = data[j]*2     # will work.


查看完整回答
反對(duì) 回復(fù) 2022-10-25
?
www說

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

初始化new_data并data刪除else.


編輯: 這應(yīng)該回答你,它更有效,因?yàn)槟阍谡麄€(gè)數(shù)組中迭代你擁有的間隔數(shù),這對(duì)于大輸入來說會(huì)很慢,但在這里你將遍歷數(shù)組一次。如果你想將其他元素增加三倍,一個(gè)天真的解決方案是在循環(huán)new_data之前乘以 3 ,所以把.fornew_data = np.copy(data)*3


import numpy as np


data = np.array([0,1,2,8,4,5,6,5,4,5,6,7,8])

start = np.array([0,5,7])

end = np.array([3,6,9])

new_data = np.copy(data)    # change to new_data = np.copy(data)*3 to triple other elements.


for i in range(len(start)):

    for j in range(start[i], end[i]+1):

        new_data[j] = data[j]*2

您的代碼中的另一個(gè)注意事項(xiàng)是(j >= start[i]) & (j <= end[i]),這可以簡(jiǎn)化為start[i] <= j <= end[i],可能更快。


查看完整回答
反對(duì) 回復(fù) 2022-10-25
?
慕森卡

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

我建議使用 python 的zip命令來同時(shí)解壓縮多個(gè)列表。


代碼說明:由于不屬于任何子列表的數(shù)據(jù)點(diǎn)保持不變,我使用 numpy 的copy方法來創(chuàng)建原始數(shù)據(jù)的新副本。然后我將您想要的子列表乘以兩個(gè)。


import numpy as np


data = np.array([0, 1, 2, 8, 4, 5, 6, 5, 4, 5, 6, 7, 8])

start = np.array([0, 5, 7])

end = np.array([3, 6, 9])


new_data = data.copy() #Not to mess up our original dataset.

for s, e in zip(start, end):

    new_data[s:e+1] *= 2 #Because it's an inclusive set.


查看完整回答
反對(duì) 回復(fù) 2022-10-25
  • 3 回答
  • 0 關(guān)注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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