Как я могу перебрать список файлов .txt, используя numpy? - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь перебрать список .txt файлов в Python.Я хотел бы загрузить каждый файл по отдельности, создать массив, найти максимальное значение в определенном столбце каждого массива и добавить его в пустой список.Каждый файл имеет три столбца и не содержит заголовков или чего-либо, кроме цифр.

Моя проблема - запуск итерации.Я получил сообщения об ошибке, такие как «Нет такого файла или каталога», а затем отображает имя первого .txt файла в моем списке.

Я использовал os.listdir() для отображения каждого файла в каталоге, с которым я работаю.Я присвоил это переменной filenamelist, которую я пытаюсь перебрать.

Вот одна из моих попыток перебора:

for f in filenamelist:
    x, y, z = np.array(f)
    currentlist.append(max(z))

Я ожидаю, что он создаст массивкаждого файла найдите максимальное значение третьего столбца (который я назначил z), а затем добавьте его в пустой список, а затем перейдите к следующему файлу.

Редактировать: вот код, который янаписал до сих пор:

import os
import numpy as np
from glob import glob

path = 'C://Users//chand//06072019'
filenamelist = os.listdir(path)
currentlist = []
for f in filenamelist:
    file_array = np.fromfile(f, sep=",")
    z_column = file_array[:,2]
    max_z = z_column.max()
    currentlist.append(max_z)

Редактировать 2: Вот фрагмент одного файла, из которого я пытаюсь извлечь значение:

0,           0.996,    0.031719
5.00E-08,    0.996,    0.018125
0.0000001,   0.996,    0.028125
1.50E-07,    0.996,    0.024063
0.0000002,   0.996,    0.023906
2.50E-07,    0.996,    0.02375
0.0000003,   0.996,    0.026406

Каждый столбец имеет длину 1000Я пытаюсь извлечь максимальное значение третьего столбца и добавить его в пустой список.

1 Ответ

0 голосов
/ 17 июня 2019

Основная проблема в том, что np.array(filename) не загружает файл для вас.В зависимости от формата вашего файла, что-то вроде np.loadtxt() сделает свое дело (см. документы ).

Edit: Как уже упоминалось, естьЕще одна проблема с вашей реализацией.os.listdir() возвращает список файлов names , но вам нужен файл paths .Вы можете использовать os.path.join(), чтобы получить нужный путь.

Ниже приведен пример того, как вы можете делать то, что вы хотите, но это действительно зависит от формата файла.В этом примере я предполагаю файл CSV (через запятую).

Пример входного файла:

1,2,3
4,5,6

Пример кода:

path = 'C://Users//chand//06072019'
filenames = os.listdir(path)
currentlist = []

for f in filenames:
    # get the full path of the filename
    filepath = os.path.join(path, f)
    # load the file
    file_array = np.loadtxt(filepath, delimiter=',')
    # get the whole third column
    z_column = file_array[:,2]
    # get the max of that column
    max_z = z_column.max()
    # add the max to our list
    currentlist.append(max_z)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...