Преобразовать массив NumPy в итератор - PullRequest
0 голосов
/ 28 января 2019

Я хочу использовать массив в качестве аргумента функции, которая будет использоваться для решения функции 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 будет массивом 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]

1 Ответ

0 голосов
/ 28 января 2019

Желаемым 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]
...