Skip to content

Dans NumPy, les tableaux peuvent être enregistrés sous forme de fichiers .txt et .js , qui sont des formats binaires spécifiques à NumPy préservant les informations essentielles comme le type de données ( .txt ) et la forme pendant les processus d’enregistrement et de chargement.

Pour lire et écrire un fichier texte tel que CSV (valeurs séparées par des virgules) ou TSV (valeurs séparées par des tabulations), consultez l’article suivant.

La version de NumPy utilisée dans cet article est la suivante. Notez que les fonctionnalités peuvent varier selon les versions.

import numpy as np print(np.__version__) # 1.26.1 

Avantages et inconvénients des fichiers 𝐧‌𝐩‌𝐲‌ et 𝐧‌𝐩‌𝐳‌

Avantages

Les fichiers 𝐧‌𝐩‌𝐲‌ et 𝐧‌𝐩‌𝐳‌ conservent des informations telles que le type de données ( 𝐝‌𝐭‌𝐲‌𝐩‌𝐞‌ ) et la forme.

Par exemple, les tableaux multidimensionnels de trois dimensions ou plus ne peuvent pas être enregistrés directement dans des fichiers CSV sans conversion de forme. Cependant, les fichiers 𝐧‌𝐩‌𝐲‌ et 𝐧‌𝐩‌𝐳‌ enregistrent ces tableaux tels quels, préservant à la fois leur structure et leur précision sans arrondir les décimales.

Inconvénients

Bien que les formats 𝐧‌𝐩‌𝐲‌ et 𝐧‌𝐩‌𝐳‌ soient documentés publiquement, leur utilisation est principalement limitée à NumPy.

Contrairement aux fichiers CSV, ces fichiers ne peuvent pas être ouverts et modifiés dans d’autres applications pour des révisions rapides du contenu.

Charger les fichiers 𝐧‌𝐩‌𝐲‌ et 𝐧‌𝐩‌𝐳‌  : 𝐧‌𝐩‌.𝐥‌𝐨‌𝐚‌𝐝‌()

Pour charger les fichiers 𝐧‌𝐩‌𝐲‌ et 𝐧‌𝐩‌𝐳‌ , utilisez 𝐧‌𝐩‌.𝐥‌𝐨‌𝐚‌𝐝‌() .

Normalement, vous n’avez besoin de préciser que le chemin du fichier comme argument, mais 𝐧‌𝐩‌𝐲‌ (stockage d’un seul tableau) et 𝐧‌𝐩‌𝐳‌ (stockage de plusieurs tableaux) sont traités différemment.

L’utilisation spécifique pour chaque cas sera expliquée avec 𝐧‌𝐩‌.𝐬‌𝐚‌𝐯‌𝐞‌() , 𝐧‌𝐩‌.𝐬‌𝐚‌𝐯‌𝐞‌𝐳‌() et 𝐧‌𝐩‌.𝐬‌𝐚‌𝐯‌𝐞‌𝐳‌_𝐜‌𝐨 ‌𝐦‌𝐩‌𝐫‌𝐞‌𝐬‌𝐬‌𝐞‌𝐝‌() dans les sections ci-dessous.

Enregistrer un tableau dans un fichier 𝐧‌𝐩‌𝐲‌  : 𝐧‌𝐩‌.𝐬‌𝐚‌𝐯‌𝐞‌()

𝐧‌𝐩‌.𝐬‌𝐚‌𝐯‌𝐞‌() enregistre un seul tableau dans un fichier 𝐧‌𝐩‌𝐲‌ .

Considérez l’exemple suivant :

a = np.arange(6, dtype=np.int8).reshape(1, 2, 3) print(a) # [[[0 1 2] # [3 4 5]]] print(a.shape) # (1, 2, 3) print(a.dtype) # int8 

Spécifiez le chemin du fichier, soit sous forme de chaîne, soit sous forme d’objet 𝐩‌𝐚‌𝐭‌𝐡‌𝐥‌𝐢‌𝐛‌.P𝐚‌𝐭‌𝐡‌ , comme premier argument et le 𝐧‌𝐝‌𝐚‌𝐫‌𝐫‌𝐚‌𝐲‌ à enregistrer comme second.

np.save('data/temp/np_save', a) 

Le fichier est enregistré sous le chemin spécifié avec une extension .𝐧‌𝐩‌𝐲‌ . Si le chemin se termine déjà par .𝐧‌𝐩‌𝐲‌ , il reste similaire.

Le chargement d’un fichier 𝐧‌𝐩‌𝐲‌ avec 𝐧‌𝐩‌.𝐥‌𝐨‌𝐚‌𝐝‌() renvoie le tableau enregistré sous la forme d’un 𝐧‌𝐝‌𝐚‌𝐫‌𝐫‌𝐚‌𝐲‌ , préservant son type de données et sa forme d’origine.

a_load = np.load('data/temp/np_save.npy') print(a_load) # [[[0 1 2] # [3 4 5]]] print(a_load.shape) # (1, 2, 3) print(a_load.dtype) # int8 

Enregistrer plusieurs tableaux dans un fichier 𝐧‌𝐩‌𝐳‌  : 𝐧‌𝐩‌.𝐬‌𝐚‌𝐯‌𝐞‌𝐳‌()

𝐧‌𝐩‌.𝐬‌𝐚‌𝐯‌𝐞‌𝐳‌() enregistre plusieurs tableaux dans un seul fichier 𝐧‌𝐩‌𝐳‌ , en préservant le type et la forme des données, de manière similaire à 𝐧‌𝐩‌𝐲‌ .

Considérez les deux tableaux suivants comme exemple.

a1 = np.arange(5) print(a1) # [0 1 2 3 4] a2 = np.arange(5, 10) print(a2) # [5 6 7 8 9] 

Spécifiez le chemin du fichier sous forme de chaîne ou d’objet 𝐩‌𝐚‌𝐭‌𝐡‌𝐥‌𝐢‌𝐛‌.P𝐚‌𝐭‌𝐡‌ , suivi de tableaux à enregistrer, séparés par des virgules.

Bien que cet exemple montre l’enregistrement de deux tableaux, vous pouvez en expliciter trois ou plus.

np.savez('data/temp/np_savez', a1, a2) 

Le fichier est enregistré sous le chemin spécifié avec une extension .𝐧‌𝐩‌𝐳‌ . Si le chemin se termine déjà par .𝐧‌𝐩‌𝐳‌ , il reste similaire.

Comme les fichiers 𝐧‌𝐩‌𝐲‌ , les fichiers 𝐧‌𝐩‌𝐳‌ sont également chargés à l’aide de 𝐧‌𝐩‌.𝐥‌𝐨‌𝐚‌𝐝‌() , mais il renvoie un objet N𝐩‌𝐳‌F𝐢‌𝐥‌𝐞‌ .

npz = np.load('data/temp/np_savez.npz') print(type(npz)) # <class 'numpy.lib.npyio.NpzFile'> 

Accédez aux tableaux stockés en spécifiant leurs noms entre [] . Les noms de chaque tableau peuvent être vérifiés à l’aide de l’attribut 𝐟‌𝐢‌𝐥‌𝐞‌𝐬‌ .

print(npz.files) # ['arr_0', 'arr_1'] print(npz['arr_0']) # [0 1 2 3 4] print(npz['arr_1']) # [5 6 7 8 9] 

Par défaut, les noms 𝐚‌𝐫‌𝐫‌_0 , 𝐚‌𝐫‌𝐫‌_1 , …, sont attribués dans l’ordre des tableaux spécifiés lors de l’enregistrement.

L’utilisation d’arguments de mots-clés avec 𝐧‌𝐩‌.𝐬‌𝐚‌𝐯‌𝐞‌𝐳‌() permet d’attribuer des noms personnalisés aux tableaux.

np.savez('data/temp/np_savez_kw', x=a1, y=a2) npz_kw = np.load('data/temp/np_savez_kw.npz') print(npz_kw.files) # ['x', 'y'] print(npz_kw['x']) # [0 1 2 3 4] print(npz_kw['y']) # [5 6 7 8 9] 

Bien que cela puisse être moins courant, il est également possible de nommer seulement certains des tableaux en utilisant des arguments de mots-clés.

np.savez('data/temp/np_savez_kw2', a1, y=a2) npz_kw2 = np.load('data/temp/np_savez_kw2.npz') print(npz_kw2.files) # ['y', 'arr_0'] print(npz_kw2['arr_0']) # [0 1 2 3 4] print(npz_kw2['y']) # [5 6 7 8 9] 

enregistrer plusieurs tableaux dans un fichier .pst compressé : .pst._pst.php

𝐧‌𝐩‌.𝐬‌𝐚‌𝐯‌𝐞‌𝐳‌_𝐜‌𝐨 ‌𝐦‌𝐩‌𝐫‌𝐞‌𝐬‌𝐬‌𝐞‌𝐝‌() fonctionne comme 𝐧‌𝐩‌.𝐬‌𝐚‌𝐯‌𝐞‌𝐳‌() plus compresser les tableaux pour réduire la taille du fichier.

L’extension de fichier pour 𝐧‌𝐩‌.𝐬‌𝐚‌𝐯‌𝐞‌𝐳‌_𝐜‌𝐨 ‌𝐦‌𝐩‌𝐫‌𝐞‌𝐬‌𝐬‌𝐞‌𝐝‌() est .𝐧‌𝐩‌𝐳‌ , identique à 𝐧‌𝐩‌.𝐬‌𝐚‌𝐯‌𝐞‌𝐳‌() , et peut être chargé de la même manière avec 𝐧‌𝐩‌.𝐥‌𝐨‌𝐚‌𝐝‌() .

np.savez_compressed('data/temp/np_savez_comp', a1, a2) npz_comp = np.load('data/temp/np_savez_comp.npz') print(type(npz_comp)) # <class 'numpy.lib.npyio.NpzFile'> print(npz_comp.files) # ['arr_0', 'arr_1'] print(npz_comp['arr_0']) # [0 1 2 3 4] print(npz_comp['arr_1']) # [5 6 7 8 9] 

Les arguments de mots-clés sont également pris en charge.

np.savez_compressed('data/temp/np_savez_comp_kw', x=a1, y=a2) npz_comp_kw = np.load('data/temp/np_savez_comp_kw.npz') print(npz_comp_kw.files) # ['x', 'y'] print(npz_comp_kw['x']) # [0 1 2 3 4] print(npz_comp_kw['y']) # [5 6 7 8 9]