Есть ли у Джулии такой же способ чтения и записи данных (массив и строка), как у Python?

#python #julia

Вопрос:

До сих пор я использовал Python для анализа данных моделирования, но иногда это происходит медленнее, чем я ожидал. Итак, в эти дни я пытался использовать Джулию, но мне трудно ознакомиться с ней, а также получить информацию так же много, как на python. Вот почему я здесь за помощью!

Q1. Лучший способ импортировать массив непосредственно из файла и экспортировать массив в файл в Julia (я использовал «numpy genfromtxt» и «numpy savetxt» в python) Q2. Лучший способ прочитать строки и экспортировать их как строки, но также использовать определенный формат («.3 f»%, rjust, ljust и т. Д.) В Julia

Чтобы правильно понять мой вопрос, я также оставляю код python для этого вопроса.

Q1. Лучший способ импортировать массив непосредственно из файла и экспортировать массив в файл.

 This array is in the test.txt file
  1.1     -399.16
  1.2     -398.21
  2.4     -399.59
  4.5     -401.51
  2.2    -1071.64
  2.3    -1074.35
  5.5    -1077.36
  9.7    -1069.9
  14.0    -1731.35
  14.2    -1739.84

import numpy as np
data = np.genfromtxt('D:\JULIA\test.txt')
np.savetxt('D:\JULIA\outdata.txt', data, fmt=".3f")
 

Q2. Лучший способ прочитать строки и экспортировать их как строки, но использовать определенный формат («.3 f»%, rjust, ljust и так далее.)

 data = open('D:\JULIA\test.txt','r')
outdata = open('D:\JULIA\outdata.txt','w')
lines= data.readlines()
for line in lines:
    splitline  = line.split()
    col1 = float(splitline[0])
    col2 = float(splitline[1])
    outdata.write(('.3f' % col1).rjust(20)  ', '  ('.3f' %col2).rjust(40) 'n')
data.close()
outdata.close()
 

Пожалуйста, ответьте мне, есть ли такие же или похожие способы в Джулии или просто в Джулии следует использовать другой способ.

Ответ №1:

У Джулии есть несколько способов добиться одного и того же результата. Наиболее естественным, учитывая ваш опыт np.savetxt работы, вероятно DelimitedFiles , является стандартная библиотека:

 using DelimitedFiles

data = readdlm("input.txt")

writedlm("output.txt", data)
 

Для получения более подробной информации ознакомьтесь с документацией об этих функциях. В качестве альтернативы существуют различные пакеты для сохранения данных на диск, такие как JLD.jl, JLD2.jl, BSON.jl, HD5F.jl, … Список огромен.

Комментарии:

1. Большое вам спасибо за ваш быстрый ответ. Но не могли бы вы привести мне пример формата данных? так же, как я упоминал выше -> > ('.3f' % col1).rjust(20) или np.savetxt('D:\JULIA\outdata.txt', data, fmt=".3f") Как я могу определить длину и расстояние между данными или десятичной точкой в Julia как для строки, так и для массива?

2. Существует также несколько методов для управления строковыми форматами в языке. Printf Стандартная библиотека предоставляет @sprintf , например. Если вам нужен синтаксис, подобный Python, проверьте пакет github.com/JuliaIO/Formatting.jl