ValueError: Desconocido formato de código «f», para el objeto de tipo ‘str’

Me sale el siguiente error al intentar escribir 2 arrays de NumPy en un archivo DAT.

fo.write('{0:f} {1:f} \n'.format(np.array(p_initial),np.array(pv_za)))
ValueError: Unknown format code 'f' for object of type 'str'

El código completo está disponible aquí : TypeError: no se puede multiplicar la secuencia de la no-int del tipo ‘float’ : prblem con arrays de NumPy

Soy bastante nuevo en Python. ¿Cómo escribir NumPy de punto flotante de las matrices a DAT archivos para que puedan ser representados mediante matplotlib o gnuplot ?

  • NumPy no admite .format() formato sin embargo, no creo. NumPy también tiene soporte dedicado para escribir las matrices de archivos, ¿por qué inventar su propia?
  • A mí me parece que np.array(p_initial) y np.array(pv_za) son cadenas, no flota.
  • No, ellos se convierten en cadenas porque no tienen un __format__ gancho.
  • …por lo que son cadenas… al menos cuando llegan a la parte del código que desea utilizarlos como flotadores.
  • Así que, ¿no hay manera de salir???
  • numpy.savetext() va a hacer,supongo?
  • …pero quiero almacenar 2 matriz para el archivo. numpy.savetxt permitirá que sólo uno! 🙁
  • He sido Googleing para tratar de encontrar más información acerca de NumPy no tener un __format__ gancho, pero no he encontrado nada. Hacer versiones más recientes respaldan? ¿Puede un enlace a más info? Gracias!
  • Yo no soy consciente de que cualquier NumPy versión que soporta __format__. Yo sólo indicó que el OP no puede hacer lo que quiere hacer debido a que el método no es compatible.

InformationsquelleAutor Moksha | 2013-04-04

2 Kommentare

  1. 0

    La forma más fácil con numpy.savetxt:

    import numpy as np
    a = np.arange(5)
    b = np.arange(5) + 2
    np.savetxt('test.txt', np.array([a,b]).T, '%f')

    Da:

    0.000000 2.000000
    1.000000 3.000000
    2.000000 4.000000
    3.000000 5.000000 
    4.000000 6.000000
  2. -1

    Por favor, pruebe lo siguiente enfoque:

    import itertools as i
    import numpy as np
    >>> '{0:f} {1:f}'.format(*i.chain(np.array([123]), np.array([234])))
    '123.000000 234.000000'
    • Por favor me proporcione la información ¿por qué mi respuesta después de la edición no es útil.
    • Yo no votar en contra de su respuesta Marcin!… Ese error no se está mostrando. Ahora me aparece el error de la otra vez yo estaba teniendo pv_za.append(K*np.sin(K*pv_za_temp)) TypeError: can't multiply sequence by non-int of type 'float' :((
    • Eso no funciona porque el OP quiere imprimir la totalidad de las matrices en una sola línea, no los elementos de la matriz.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea