Python 在numpy数组上循环并使用上一个数组修改当前值

Python 在numpy数组上循环并使用上一个数组修改当前值,python,arrays,for-loop,Python,Arrays,For Loop,我是python新手,在这个问题上我被困了一整天。我知道这肯定是一种非python式的编码方式,但我没有找到一种向量方式来完成我想在这里做的事情。。。问题是在循环期间必须使用φ[t-1]值修改“φ[t]”。我试图使用临时变量或在循环中创建phi的副本,但没有成功。 如果有人能给我一个提示就太好了。谢谢 代码如下: import math import numpy x = numpy.linspace(20, 1200, 20) R=8.3144621 beta=0.166666 def func

我是python新手,在这个问题上我被困了一整天。我知道这肯定是一种非python式的编码方式,但我没有找到一种向量方式来完成我想在这里做的事情。。。问题是在循环期间必须使用φ[t-1]值修改“φ[t]”。我试图使用临时变量或在循环中创建phi的副本,但没有成功。 如果有人能给我一个提示就太好了。谢谢 代码如下:

import math
import numpy
x = numpy.linspace(20, 1200, 20)
R=8.3144621
beta=0.166666
def func(T, n , A, E):
    phi = numpy.zeros(T.shape)
    dphi = numpy.zeros(T.shape)
    for t in range(len(T)):
        dphi[t]=A/beta*(1-phi[t])**n*math.exp(-E/(R*T[t]))
        if t>0:
            phi[t]= phi[t-1]+(T[t]-T[t-1])*dphi[t]
        if phi[t]>1: phi[t]=1
    return dphi
y = func(x, 0.5, 12000, 100000)

只需使用
pre
cur
变量来存储当前和以前的元素,并在循环中相应地修改它们。注意-您需要2个变量,而不是像您尝试的那样仅需要1个。您是否期望此输出[4.88896980e-257 1.73563984e-059 4.334494456E-032 3.46750249e-021 2.49890102e-015 1.13283831e-011 3.57984706e-009 2.34840793e-007 5.63679653e-006 6.84168261e-005 5.11955325e-004 2.68472478e-003 1.07586453e-002 3.50033842e-002 9.6586190E-002 2.43679653E-006+19300E-930003.19545191e+000]你的代码有什么问题吗?在你当前的代码中,(如果我读对了),
phi
数组没有任何作用。因为你只返回
dphi
,循环中唯一重要的事情是分配给
dphi[t]
,而在这个分配中你使用的是
phi[t]
始终为0,因为它在
dphi[t]
赋值之后才设置。您的意思是设置
phi[t+1]