В общем, вы должны использовать рекомендацию Колина из комментария в долгосрочной перспективе.Вот что вы можете сделать, если у вас уже есть эти текстовые файлы.Я буду использовать меньший пример.
Предположим, ваш исходный массив состоит из двух массивов 2x2x2.Вот пример, который я буду использовать:
julia> z
2-element Array{Array{Int64,3},1}:
[1 2; 3 4]
[10 20; 30 40]
[1 2; 3 4]
[10 20; 30 40]
julia> z[1]
2×2×2 Array{Int64,3}:
[:, :, 1] =
1 2
3 4
[:, :, 2] =
10 20
30 40
julia> z[2]
2×2×2 Array{Int64,3}:
[:, :, 1] =
1 2
3 4
[:, :, 2] =
10 20
30 40
Теперь он будет сохранен в файл в виде следующей строки:
julia> repr(z)
"Array{Int64,3}[[1 2; 3 4]\n\n[10 20; 30 40], [1 2; 3 4]\n\n[10 20; 30 40]]"
И разбор этой строки явно не удастся.Вам нужно отредактировать свои файлы, добавив cat
вызов метода для каждой записи большого массива и передать измерение 3
в качестве того, на котором вы хотите их отследить.
Это означает, чтоИсходное содержимое файла сохранения:
Array{Int64,3}[[1 2; 3 4]
[10 20; 30 40], [1 2; 3 4]
[10 20; 30 40]]
Этот файл должен содержать:
Array{Int64,3}[cat(3, [1 2; 3 4], [10 20; 30 40]),
cat(3, [1 2; 3 4], [10 20; 30 40])]
Эти изменения могут быть выполнены вручную или вы можете написать программу длявыполнить преобразование (необходимо заменить ,
на ), cat(3,
; \n\n
на ,
; убедитесь, что добавлены первые cat
и последние )
, так как они не будут перехвачены первыми двумя правилами).
Теперь, если вы прочитаете его в виде строки, вы можете оценить результат его анализа:
julia> s = """Array{Int64,3}[cat(3, [1 2; 3 4], [10 20; 30 40]),
cat(3, [1 2; 3 4], [10 20; 30 40])]"""
"Array{Int64,3}[cat(3, [1 2; 3 4], [10 20; 30 40]),\ncat(3, [1 2; 3 4], [10 20; 30 40])]"
julia> eval(parse(s))[2]
2×2×2 Array{Int64,3}:
[:, :, 1] =
1 2
3 4
[:, :, 2] =
10 20
30 40
Обратите внимание, однако, что все это не рекомендуется - лучше использоватьпакеты, которые Колин рекомендовал сделать это.