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

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

numpy 數組的累積和并將每個值存儲到新數組中

numpy 數組的累積和并將每個值存儲到新數組中

料青山看我應如是 2023-03-01 17:54:22
fs我通過讀取 *.csv 文件得到了一個 numpy 數組。它的大小是 (606,),數據類型是 float64。示例 a 我的原始數據i   M(i)    dM(i)1   0.0012  0.000132           0.000153           0.000164           0.00018現在我的數組中的每個元素都應該像這樣計算M(i) = M(i-1) + dM(i-1)*t:t 是常數因子 10。M(2)會是M(2) = M(1) + dM(1)*t = 0.0012 + 0.00013*10 = 0.0025 M(3)會是M(3) = M(2) + dM(2)*t = 0.0025 + 0.00015*10 = 0.004我手動計算了一些值。i   M(i)    dM(i)1   0.0012  0.000132   0.0025  0.000153   0.004   0.000164   0.0056  0.00018我的想法是簡單地為數組中的每一項寫一個for循環,但計算似乎是錯誤的。fs是數組,t是一定的時間間隔。t是常數,值為 10#   Ms(t)def mass(t, fs):    M_st = 0    for i in fs        M_st = M_st + i*t    return M_stsum = mass(10,fs)
查看完整描述

4 回答

?
慕姐8265434

TA貢獻1813條經驗 獲得超2個贊

cumsum為它使用內置函數(a是你的數組):


a.cumsum()

#[ 1  4  8 13 19 26]

更新:基于 OP 對帖子的編輯(t是標量并且M是dM數組。請注意,python 索引是基于零的而不是基于一的):


M(0) + (dM*t).cumsum()


查看完整回答
反對 回復 2023-03-01
?
慕田峪9158850

TA貢獻1794條經驗 獲得超7個贊

一種優雅的解決方案是


m = arr[0]

temp = np.tril(np.ones([m, m]))


new_arr = temp @ arr


查看完整回答
反對 回復 2023-03-01
?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

逐行遍歷文件,并將當前行的值加上結果數組中前一個元素的值。我不是 numpy 數組的專家,但這樣的東西適用于標準列表


def create_sum_array(input_arr, length): 

   temp_arr = []

   for i in range(length):

     if(temp_arr = []):

       temp_arr.append(input_arr[i])

     else:

       temp_arr.append(temp_arr[i-1] + input_arr[i])

   return temp_arr


查看完整回答
反對 回復 2023-03-01
?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

這不是最優雅的解決方案,但像這樣的方法會起作用:


import numpy as np

array = np.array([1, 2, 3, 4, 5, 6])

array2 = np.zeros(len(array))

for i in range(len(array)):

    if i == 0:

        array2[i] = array[i]

        

    array2[i] = np.sum(array[:i+1]) 

print(array2)


查看完整回答
反對 回復 2023-03-01
  • 4 回答
  • 0 關注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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