猿问

numpy 数组的累积和并将每个值存储到新数组中

fs我通过读取 *.csv 文件得到了一个 numpy 数组。它的大小是 (606,),数据类型是 float64。


示例 a 我的原始数据


i   M(i)    dM(i)

1   0.0012  0.00013

2           0.00015

3           0.00016

4           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.00013

2   0.0025  0.00015

3   0.004   0.00016

4   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_st

sum = mass(10,fs)


料青山看我应如是
浏览 143回答 4
4回答

慕姐8265434

cumsum为它使用内置函数(a是你的数组):a.cumsum()#[ 1  4  8 13 19 26]更新:基于 OP 对帖子的编辑(t是标量并且M是dM数组。请注意,python 索引是基于零的而不是基于一的):M(0) + (dM*t).cumsum()

慕田峪9158850

一种优雅的解决方案是m = arr[0]temp = np.tril(np.ones([m, m]))new_arr = temp @ arr

慕盖茨4494581

逐行遍历文件,并将当前行的值加上结果数组中前一个元素的值。我不是 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

智慧大石

这不是最优雅的解决方案,但像这样的方法会起作用:import numpy as nparray = 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)
随时随地看视频慕课网APP

相关分类

Python
我要回答