web-dev-qa-db-fra.com

Définition de l'option fmt dans numpy.savetxt

Je regarde le numpy.savetxt, et je suis bloqué à l'option fmt.

J'ai essayé de regarder ici et la référence dans le lien ci-dessous toutes les lettres qui peuvent être utilisées pour le tri de l'option fmt me donne une idée générale de ce qui se passe.

Ce que je ne comprends pas, c'est si le % le symbole est requis et dans un exemple donné ici comment dois-je interpréter le nombre 10,5? Si "f" consiste à définir la virgule flottante, alors comment se fait-il qu'il soit 10,5 (là encore, je ne sais peut-être pas comment les virgules flottantes sont définies ...).

23
leb

Vous pouvez utiliser le paramètre fmt de plusieurs façons, voici quelques exemples.

import numpy as np
a = np.array([[11,12,13,14],
              [21,22,23,24]])

1) Définition de la précision en virgule flottante: np.savetxt('tmp.txt',a, fmt='%1.3f')

11.000 12.000 13.000 14.000
21.000 22.000 23.000 24.000

2) Ajout de caractères pour justifier à droite.

Avec des espaces: np.savetxt('tmp.txt',a, fmt='% 4d')

  11   12   13   14
  21   22   23   24

Avec des zéros: np.savetxt('tmp.txt',a, fmt='%04d')

0011 0012 0013 0014
0021 0022 0023 0024

3) Ajout de caractères à justifier à gauche (utilisation de "-").

Avec des espaces: np.savetxt('tmp.txt',a, fmt='%-4d')

11   12   13   14  
21   22   23   24  

Vous pouvez également utiliser pour écrire des expressions, comme (notez que le nombre d'entrées dans l'expression est le même que le nombre de colonnes dans le tableau:

4) Exemple général: np.savetxt('tmp.txt',a, fmt='%1.1f + %1.1f / (%1.1f * %1.1f)')

11.0 + 12.0 / (13.0 * 14.0)
21.0 + 22.0 / (23.0 * 24.0)
47

Cela lien pourrait être utile.

Depuis le lien:

format_spec ::=  [[fill]align][sign][#][0][width][,][.precision][type]
fill        ::=  <any character>
align       ::=  "<" | ">" | "=" | "^"
sign        ::=  "+" | "-" | " "
width       ::=  integer
precision   ::=  integer
type        ::=  "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"

La largeur est un entier décimal définissant la largeur minimale du champ. S'il n'est pas spécifié, la largeur du champ sera déterminée par le contenu.

Lorsqu'aucun alignement explicite n'est donné, le fait de précéder le champ largeur d'un caractère zéro ("0") active le remplissage à zéro sensible aux signes pour les types numériques. Cela équivaut à un caractère de remplissage de "0" avec un type d'alignement de "=".

La précision est un nombre décimal indiquant le nombre de chiffres à afficher après le point décimal pour une valeur à virgule flottante formatée avec 'f' et 'F', ou avant et après le point décimal pour une valeur à virgule flottante formatée avec 'g' ou 'G'. Pour les types non numériques, le champ indique la taille maximale du champ - en d'autres termes, combien de caractères seront utilisés à partir du contenu du champ. La précision n'est pas autorisée pour les valeurs entières.

3
FFT