10
votes

Manière pythonique d'importer des données de plusieurs fichiers dans un tableau

Je suis relativement nouveau à Python et je me demandais de la meilleure façon d'importer des données de plusieurs fichiers en une seule matrice. J'ai plusieurs fichiers texte contenant 50 lignes de deux colonnes de données (colonne délimitée) telles que: xxx

- xxx

allonsons Dites que j'ai 10 fichiers texte à importer et à importer dans une variable appelée data .

Je voudrais créer un seul tableau 3D contenant toutes les données. De cette façon, je peux facilement tracer et manipuler les données en faisant référence aux données par data [:, :, n] n fait référence à l'index du fichier texte.

Je pense que la façon dont je ferais cela, c'est avoir une matrice de forme (50, 2, 10), mais je ne sais pas la meilleure façon d'utiliser Python pour la créer. J'ai réfléchi à utiliser une boucle pour importer chaque fichier texte sous forme de tableau 2D, puis les empiler pour créer un tableau 2D, bien que ne puissiez pas trouver les commandes appropriées pour le faire (j'ai regardé VStact et Column_Stack dans NUMPY MAIS Ne semble pas ajouter une dimension supplémentaire).

Jusqu'à présent, j'ai écrit le code d'importation: xxx

mais le problème avec ce code , est que je ne peux pas traiter que les données lorsqu'elles sont dans la boucle de la boucle.

Ce que je veux vraiment, c'est un tableau de toutes les données importées dans les fichiers texte.

Toute aide serait grandement appréciée merci!


0 commentaires

5 Réponses :


1
votes

cherchez-vous un tableau qui est [txt colonne1, txt colonne2, nom de fichier]? xxx

une alternative si vous ne voulez pas transposer deux fois. xxx


0 commentaires

1
votes

Si toutes les données sont de la même forme, appuyez simplement sur une liste. xxx pré>

et dans votre boucle: p> xxx pré>

enfin, vous avez P>

asarray(all_data)


1 commentaires

Merci, c'est simple et fonctionne bien - j'ai essayé quelque chose comme ça mais j'ai raté la commande "Asarray". Je n'ai pas réalisé que ce ne serait pas un tableau sans elle.



7
votes

"Mais le problème avec ce code est que je ne peux que traiter les données lorsqu'il est en boucle pour la boucle." em>

supposant que votre code fonctionne: p>

# Get folder path containing text files
file_list = glob.glob(source_dir + '/*.TXT')
data = []
for file_path in file_list:
    data.append(
        np.genfromtxt(file_path, delimiter=',', skip_header=3, skip_footer=18))
# now you can access it outside the "for loop..."
for d in data:
    print d


1 commentaires

Merci, cela améliore la réponse de Cronos.



1
votes

brut mais rapide xxx


Si vous souhaitez obtenir une liste de fichiers à partir d'un répertoire spécifique, consultez os.walk

Comme il n'est pas clair comment vous voudriez que vous voudriez que les données, j'ai montré de nombreuses façons de le stocker

AllData < / code> est une liste de dictionnaires

pour obtenir la 2e colonne de données à partir du 3ème fichier que vous pourriez faire allData [2] ['col2']

Si vous vouliez le nom du troisième fichier allData [2] ['Nom']


0 commentaires

0
votes

Peut-être que vous pouvez faire comme ceci: xxx


0 commentaires