将 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]