将 numpy 数组转换为迭代器
Convert a numpy array to iterator
我想将数组用作将用于求解 ODE 函数的函数的参数。
def ode(x, t, read_tau, tau_arr):
q_ib = x[0:4]
omega = x[4:7]
dq_ib = 0.5 * np.dot(gen_omega(omega), q_ib) + read_tau(tau_arr)
return dq_ib
dq_ib = odeint(rhs, x0, t, args=(b_I, read_tau, tau_arr))
而tau_arr是一个(1000, 3)数组。我能想到的唯一解决方案是首先将 tau_arr 作为迭代器并在 read_tau() 中。
def read_tau(tau_arr):
return next(tau_arr)
并且 read_tau 函数的 return 值将是一个 1x3 数组,将用于求解 ODE。
我的问题是如何将一个二维数组转换成一个迭代器,当用next()调用迭代器时,它会逐行return一个数组。
a = np.array([[1,2,3], [4,5,6]])
convert_to_iter(a)
next(a)
[1,2,3]
next[a]
[4,5,6]
您想要的 convert_to_iter()
是 Python 内置 iter()
函数。
> a = iter(np.array([[1,2,3], [4,5,6]]))
> next(a)
[1,2,3]
> next[a]
[4,5,6]
我想将数组用作将用于求解 ODE 函数的函数的参数。
def ode(x, t, read_tau, tau_arr):
q_ib = x[0:4]
omega = x[4:7]
dq_ib = 0.5 * np.dot(gen_omega(omega), q_ib) + read_tau(tau_arr)
return dq_ib
dq_ib = odeint(rhs, x0, t, args=(b_I, read_tau, tau_arr))
而tau_arr是一个(1000, 3)数组。我能想到的唯一解决方案是首先将 tau_arr 作为迭代器并在 read_tau() 中。
def read_tau(tau_arr):
return next(tau_arr)
并且 read_tau 函数的 return 值将是一个 1x3 数组,将用于求解 ODE。
我的问题是如何将一个二维数组转换成一个迭代器,当用next()调用迭代器时,它会逐行return一个数组。
a = np.array([[1,2,3], [4,5,6]])
convert_to_iter(a)
next(a)
[1,2,3]
next[a]
[4,5,6]
您想要的 convert_to_iter()
是 Python 内置 iter()
函数。
> a = iter(np.array([[1,2,3], [4,5,6]]))
> next(a)
[1,2,3]
> next[a]
[4,5,6]