El objeto ‘flotante’ no tiene atributo ‘__getitem__’ Error de Python

Cuando corro el codigo

import numpy as np from scipy.integrate import odeint import matplotlib.pyplot as plt # Initial conditions def f_func(eta,y_in): y_out = np.zeros(3) y_out[0] = y_in[1] y_out[1] = y_in[2] y_out[2] = -y_in[0]*y_in[2]/2 return y_out eta = np.linspace(0,8,100) X0 = [0,0,0.33206] X = odeint(f_func,X0,eta) 

Me sale el error

  'float' object has no attribute '__getitem__' 

Cuando ejecuto el siguiente progtwig MATLAB, todo funciona bien. La función MATLAB ode45 es equivalente a la herramienta Pythons.

progtwig principal:

 clear global beta beta = 1; initial_value = [0,0,1.2322]; eta = linspace(0,4,100) [x_out, y_out] = ode45(@falkner_skan,eta,initial_value); plot(x_out,y_out(:,2)) 

función falkner_skan:

 function y_out = falkner_skan(x,y_in) global beta y_out(1,1) = y_in(2); y_out(2,1) = y_in(3); y_out(3,1) = -y_in(1)*y_in(3) - beta*(1-y_in(2)^2); end 

Esto y esto y este hilo no parecen darme una guía.

Parece que y_in no es una lista sino un valor flotante. El error aumenta porque está intentando obtener un elemento con obj[x] de un objeto que no lo admite.

Mirando la documentación para odeint , dice que la función de entrada debería tomar dos argumentos, el primero es su objeto de datos y el segundo debe ser un flotante. Su implementación de f_func es por lo tanto incorrecta.

NumPy tiene un objeto float 64 que tiene la función item (), np.float64 (10.5) .item ()