为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信