[PYTHON] Sortie csv avec un nombre différent de chiffres pour chaque colonne avec numpy

Lors de la sortie du résultat de prédiction calculé par machine learning

--Je veux sortir 0/1 pour la classification binaire --S'il s'agit d'une valeur de probabilité, vous voulez la sortir avec [0,1], soit environ 5 chiffres après la virgule décimale. --Pour la régression, je souhaite utiliser la notation exponentielle en fonction de la plage de valeurs possibles.

Vous souhaiterez peut-être ajuster le nombre de chiffres de la valeur de sortie.

Dans numpy, vous pouvez sortir csv et tsv avec numpy.savetxt (), mais vous pouvez ajuster le nombre de chiffres en spécifiant le paramètre fmt à ce moment.

In [1]: import numpy as np

In [2]: np.savetxt("output.csv", [[0.1, 0.2, 0.3], [0.4, 0.5, 0.6]])

In [3]: cat output.csv
1.000000000000000056e-01 2.000000000000000111e-01 2.999999999999999889e-01
4.000000000000000222e-01 5.000000000000000000e-01 5.999999999999999778e-01

In [4]: np.savetxt("output.csv", [[0.1, 0.2, 0.3], [0.4, 0.5, 0.6]], fmt="%.5f")

In [5]: cat output.csv
0.10000 0.20000 0.30000
0.40000 0.50000 0.60000

En fait, vous pouvez spécifier plusieurs de ce paramètre au format liste. Si vous définissez des paramètres tels que fmt = ["% .0f ","% .1f ","% .5f "], chaque colonne (chaque colonne) sera sortie avec le nombre de chiffres spécifié.

In [6]: np.savetxt("output.csv", [[0.1, 0.2, 0.3], [0.4, 0.5, 0.6]], fmt=["%.0f", "%.1f", "%.5f"])

In [7]: cat output.csv
0 0.2 0.30000
0 0.5 0.60000

In [8]: np.savetxt("output.csv", [[0.1, 0.2, 0.3], [0.4, 0.5, 0.6]], fmt=["%.0e", "%.1e", "%.5e"])

In [9]: cat output1.csv
1e-01 2.0e-01 3.00000e-01
4e-01 5.0e-01 6.00000e-01

Cependant, lors de la spécification de chaque colonne, elle doit être spécifiée dans toutes les colonnes, et si le nombre de colonnes ne correspond pas, une erreur se produit.

In [10]: np.savetxt("output.csv", [[0.1, 0.2, 0.3], [0.4, 0.5, 0.6]], fmt=["%.0e", "%.1e"])
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-11-6d7d74124420> in <module>()
----> 1 np.savetxt("output.csv", [[0.1, 0.2, 0.3] ,[0.4, 0.5, 0.6]], fmt=["%.0e", "%.1e"])

[...]

AttributeError: fmt has wrong shape.  ['%.0e', '%.1e']

Ceci est utile lorsque l'ID est dans la première colonne, ou lorsque la variable explicative est flottante mais que la variable objectif est d'un type différent tel que int.

référence

Recommended Posts

Sortie csv avec un nombre différent de chiffres pour chaque colonne avec numpy
Obtenez le nombre de chiffres
Brouillage réversible d'entiers en Python
Sortie csv avec un nombre différent de chiffres pour chaque colonne avec numpy
Développez n'importe quel nombre d'arguments avec yasnippet
Comment obtenir le nombre de chiffres en Python
Convertissez les données avec la forme (nombre de données, 1) en (nombre de données,) avec numpy.
Sortie CSV des données d'impulsion avec Raspberry Pi (sortie CSV)
Enregistrez la sortie du GAN conditionnel pour chaque classe ~ Avec l'implémentation cGAN par PyTorch ~
Obtenez le nombre d'occurrences pour chaque élément de la liste
Obtenez le nombre de chiffres
Fichier journal de sortie avec Job (Notebook) de Cloud Pak for Data
Sortie vers un fichier csv avec Python
Réécrire NumPy par morceaux pour CuPy
4ème nuit de boucle avec pour
Sortie CSV des données d'impulsion avec Raspberry Pi (vérifier l'entrée analogique avec python)
Obtenez le nombre de visites sur chaque page avec ReportingAPI + Cloud Functions