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: - p> allonsons Dites que j'ai 10 fichiers texte à importer et à importer dans une variable appelée data em>. p> 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 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). P> Jusqu'à présent, j'ai écrit le code d'importation: p> 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. P> Ce que je veux vraiment, c'est un tableau de toutes les données importées dans les fichiers texte. P> Toute aide serait grandement appréciée merci! P> P> data [:, :, n] code> où n code> fait référence à l'index du fichier texte. P>
5 Réponses :
cherchez-vous un tableau qui est [txt colonne1, txt colonne2, nom de fichier]? une alternative si vous ne voulez pas transposer deux fois. p>
Si toutes les données sont de la même forme, appuyez simplement sur une liste. et dans votre boucle: p> enfin, vous avez P> asarray(all_data)
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.
"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
Merci, cela améliore la réponse de Cronos.
brut mais rapide 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 p> pour obtenir la 2e colonne de données à partir du 3ème fichier que vous pourriez faire Si vous vouliez le nom du troisième fichier
Si vous souhaitez obtenir une liste de fichiers à partir d'un répertoire spécifique, consultez os.walk p> AllData < / code> est une liste de dictionnaires p> allData [2] ['col2'] Code> p> allData [2] ['Nom'] code> p> p> P>
Peut-être que vous pouvez faire comme ceci: