numpy
Fichier IO avec numpy
Recherche…
Enregistrement et chargement de tableaux numpy à l'aide de fichiers binaires
x = np.random.random([100,100])
x.tofile('/path/to/dir/saved_binary.npy')
y = fromfile('/path/to/dir/saved_binary.npy')
z = y.reshape(100,100)
all(x==z)
# Output:
# True
Chargement de données numériques à partir de fichiers texte avec une structure cohérente
La fonction np.loadtxt
peut être utilisée pour lire des fichiers de type csv:
# File:
# # Col_1 Col_2
# 1, 1
# 2, 4
# 3, 9
np.loadtxt('/path/to/dir/csvlike.txt', delimiter=',', comments='#')
# Output:
# array([[ 1., 1.],
# [ 2., 4.],
# [ 3., 9.]])
Le même fichier peut être lu en utilisant une expression régulière avec np.fromregex
:
np.fromregex('/path/to/dir/csvlike.txt', r'(\d+),\s(\d+)', np.int64)
# Output:
# array([[1, 1],
# [2, 4],
# [3, 9]])
Enregistrement de données sous forme de fichier ASCII de style CSV
Analog to np.loadtxt
, np.savetxt
peut être utilisé pour enregistrer des données dans un fichier ASCII
import numpy as np
x = np.random.random([100,100])
np.savetxt("filename.txt", x)
Pour contrôler le formatage:
np.savetxt("filename.txt", x, delimiter=", " ,
newline="\n", comments="$ ", fmt="%1.2f",
header="commented example text")
Sortie:
$ commented example text
0.30, 0.61, 0.34, 0.13, 0.52, 0.62, 0.35, 0.87, 0.48, [...]
Lecture de fichiers CSV
Trois fonctions principales disponibles (description à partir des pages de manuel):
fromfile
- Un moyen très efficace de lire des données binaires avec un type de données connu, ainsi que d'analyser des fichiers texte simplement formatés. Les données écrites à l'aide de la méthode tofile peuvent être lues à l'aide de cette fonction.
genfromtxt
- Charge des données à partir d'un fichier texte, avec les valeurs manquantes traitées comme spécifié. Chaque ligne après les premières lignes skip_header est fractionnée au caractère délimiteur et les caractères qui suivent le caractère commentaires sont ignorés.
loadtxt
- Charge des données à partir d'un fichier texte. Chaque ligne du fichier texte doit avoir le même nombre de valeurs.
genfromtxt
est une fonction wrapper pour loadtxt
. genfromtxt
est le plus simple à utiliser car il dispose de nombreux paramètres pour gérer le fichier d'entrée.
Nombre cohérent de colonnes, type de données cohérent (numérique ou chaîne):
Étant donné un fichier d'entrée, myfile.csv
avec le contenu:
#descriptive text line to skip
1.0, 2, 3
4, 5.5, 6
import numpy as np
np.genfromtxt('path/to/myfile.csv',delimiter=',',skiprows=1)
donne un tableau:
array([[ 1. , 2. , 3. ],
[ 4. , 5.5, 6. ]])
Nombre de colonnes cohérent, type de données mixte (entre les colonnes):
1 2.0000 buckle_my_shoe
3 4.0000 margery_door
import numpy as np
np.genfromtxt('filename', dtype= None)
array([(1, 2.0, 'buckle_my_shoe'), (3, 4.0, 'margery_door')],
dtype=[('f0', '<i4'), ('f1', '<f8'), ('f2', '|S14')])
Notez que l'utilisation de dtype=None
entraîne un recarray.
Nombre incohérent de colonnes:
file: 1 2 3 4 5 6 7 8 9 10 11 22 13 14 15 16 17 18 19 20 21 22 23 24
Dans un tableau à une seule ligne:
result=np.fromfile(path_to_file,dtype=float,sep="\t",count=-1)