将numpy数组转换为迭代器

Lio*_*Lai 5 python arrays iterator numpy ode

我想使用数组作为函数的参数,该函数将用于解决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))
Run Code Online (Sandbox Code Playgroud)

tau_arr是一个(1000,3)数组。我能想到的唯一解决方案是,首先使tau_arr成为迭代器,并使其成为read_tau()。

def read_tau(tau_arr):
  return next(tau_arr)
Run Code Online (Sandbox Code Playgroud)

read_tau函数的返回值将是一个1x3数组,该数组将用于求解ODE。

我的问题是如何将二维数组转换为迭代器,并在使用next()调用迭代器时,它将逐行返回数组。

a = np.array([[1,2,3], [4,5,6]])
convert_to_iter(a)
next(a)
[1,2,3]
next[a]
[4,5,6]
Run Code Online (Sandbox Code Playgroud)

Ste*_*uch 7

您需要的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]
Run Code Online (Sandbox Code Playgroud)