python - 如何使 numpy.cumsum 在第一个值之后开始

标签 python numpy numerical-methods

我有:

import numpy as np

position = np.array([4, 4.34, 4.69, 5.02, 5.3, 5.7, ..., 4])
x = (B/position**2)*dt

A = np.cumsum(x)
assert A[0] == 0  # I want this to be true.

其中 Bdt 是标量常量。这是针对初始条件为 A[0] = 0 的数值积分问题。有没有办法设置 A[0] = 0,然后对其他所有内容执行 cumsum

最佳答案

我不明白你的问题到底是什么,但是你可以做一些事情来让 A[0] = 0

您可以将 A 创建为长一个索引以将零作为第一个条目:

# initialize example data
import numpy as np
B = 1
dt = 1
position =  np.array([4, 4.34, 4.69, 5.02, 5.3, 5.7])

# do calculation
A = np.zeros(len(position) + 1)
A[1:] = np.cumsum((B/position**2)*dt)

结果:

A = [ 0.          0.0625      0.11559096  0.16105356  0.20073547  0.23633533 0.26711403]
len(A) == len(position) + 1

或者,您可以操纵计算以减去结果的第一个条目:

# initialize example data
import numpy as np
B = 1
dt = 1
position =  np.array([4, 4.34, 4.69, 5.02, 5.3, 5.7])

# do calculation
A = np.cumsum((B/position**2)*dt)
A = A - A[0]

结果:

[ 0.          0.05309096  0.09855356  0.13823547  0.17383533  0.20461403]
len(A) == len(position)

如您所见,结果具有不同的长度。其中之一是您所期望的吗?

关于python - 如何使 numpy.cumsum 在第一个值之后开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27258693/

相关文章:

python - 为什么更改 .format 中的变量后,字符串格式的全局变量仍保持不变?

Python:对交易进行分类的最有效方法

python - 使用 sharex=True 绘制日期会导致 ValueError : ordinal must be >= 1

matlab - JULIA 中无需旋转的 LU 分解

c++ - 带 odeint 的两点边界

python - 尝试使用 Python 下载文件时出错

python - 使用动态 URL 查询字符串过滤 Pandas DataFrame

python - 如何使用 numpy.savetxt 保存和加载复数数组?

python - 在两个图像之间进行插值

python - python中的欧拉法