varias recorrer procesamiento por para mostrar matriz manipular librerias imagenes imagen filtros descomponer convertir con como binario python arrays logging scalar

recorrer - TypeError: solo las matrices de longitud-1 se pueden convertir a escalas de Python al tratar de ajustar exponencialmente los datos



librerias para procesamiento de imagenes en python (2)

Las funciones no numpy como math.abs() o math.log10() no funcionan bien con las matrices numpy. Simplemente reemplace la línea que genera un error con:

m = np.log10(np.abs(x))

Aparte de eso, la llamada np.polyfit() no funcionará porque le falta un parámetro (y de todos modos no está asignando el resultado para un uso posterior).

f=np.loadtxt(''Single Small Angle 1.txt'',unpack=True,skiprows=2) g=np.loadtxt(''Single Small Angle 5.txt'',unpack=True,skiprows=2) x = f-g[:,:11944] t=range(len(x)) m=math.log10(abs(x)) np.polyfit(t,m) plt.plot(t,abs(x)) plt.show()

Simplemente no estoy seguro de cómo solucionar mi problema. Sigue diciendo:

m=math.log10(abs(x)) TypeError: only length-1 arrays can be converted to Python scalars


Aquí hay otra forma de reproducir este error en Python2.7 con numpy:

import numpy as np a = np.array([1,2,3]) b = np.array([4,5,6]) c = np.concatenate(a,b) #note the lack of tuple format for a and b print(c)

El método np.concatenate produce un error:

TypeError: only length-1 arrays can be converted to Python scalars

Si lee la documentación sobre numpy.concatenate , verá que espera una tupla de numpy array objects. Así que rodeando las variables con paréntesis lo solucionó:

import numpy as np a = np.array([1,2,3]) b = np.array([4,5,6]) c = np.concatenate((a,b)) #surround a and b with parens, packaging them as a tuple print(c)

Luego imprime:

[1 2 3 4 5 6]

¿Que está pasando aqui?

Ese error es un caso de implementación de burbuja: es causado por la filosofía de pitón de tipado. Este es un error críptico de bajo nivel. Las agallas de pitón se revientan cuando recibe algunos tipos de variables inesperadas, intenta huir y hacer algo, se interpone, los vómito, intenta remediar la acción, falla y luego te dice que "puedes". t refromular los respondedores subespaciales cuando el viento sopla desde el este el martes ".

En lenguajes más sensibles como C ++ o Java, le habría dicho: "no puede usar un TypeA donde se esperaba TypeB". Pero Python hace lo mejor para seguir adelante, hace algo indefinido, falla, y luego te devuelve un error inútil. El hecho de que tenemos que discutir esto es una de las razones por las que no me gusta Python, o su filosofía de pato-tipado.