У меня есть несколько файлов, содержащих данные, которые выглядят следующим образом
23 125
5 100
7 15
Я хотел бы построить их.
Если элементы в каждой строке разделены одним пробелом, следующий код будет работать
import matplotlib.pyplot as plt
import numpy as np
x, y = np.loadtxt('file_to_plot', delimiter=' ', unpack=True)
plt.plot(x,y)
plt.show()
Однако элементы в файле разделены переменным числом пробелов.
Одним из решений будет предварительная обработка файла, чтобы удалить все лишние пробелы с помощью чего-то вроде конвейера оболочки
cat file_to_plot | tr -s ' ' > file_to_plot2
, а затем использовать код python в file_to_plot2.
Мой вопрос: есть ли способ использовать np.loadtxt с каким-либо оператором форматирования, чтобы иметь возможность выводить из исходного файла?
Если нет, каков наилучший способ предварительной обработки исходного файла как части Python?код, так что мне не нужно использовать конвейер оболочки?
T Бургис полностью ответил на мой вопрос, однако существует альтернативный способ построения из файлов, разделенных пробелами, а именно,
import matplotlib.pyplot as plt
import csv
x = []
y = []
fin = open('file_to_plot')
plots = csv.reader(fin, delimiter=' ')
for row in plots:
x.append(float(row[0]))
y.append(float(row[1]))
plt.plot(x,y)
plt.show()
Исключение разделителя при таком подходе не решает проблему построения данных, разделенных несколькими пробелами.Это какой-то трюк, чтобы заставить работать приведенный выше код, или мне нужно начинать с файла со значениями, разделенными одним пробелом?