Импорт файла CSV в виде матрицы - PullRequest
1 голос
/ 18 апреля 2019

Я бы хотел импортировать CSV-файл (file.csv) в виде матрицы в Юлии, чтобы построить его в виде тепловой карты с использованием GR.Мой CSV-файл содержит 255 строк и 255 записей в каждой строке.Вот несколько примеров из файла CSV для иллюстрации формата строк:

file.csv

-1.838713563526794E-8;-1.863045549663876E-8;-2.334704481052452E-8 ...
-1.7375447279939282E-8;-1.9194929690414267E-8;-2.0258124812468942E-8; ...
⋮
-1.1706980663321613E-8;-1.6244768693064608E-8;-5.443335580296977E-9; ...

Примечание: Элипсис(...) не являются частью файла CSV, скорее они указывают, что записи были опущены.

Я попытался импортировать файл в виде матрицы, используя следующую строку m = CSV.read("./file.csv"), но это приводит к255 на 1 вектор, а не 255 на 255 матрицу.Кто-нибудь знает эффективный способ импорта файлов CSV в виде матриц в Джулии?

Ответы [ 2 ]

3 голосов
/ 18 апреля 2019

m = CSV.read("./file.csv") возвращает DataFrame.

Если CSV.jl правильно читает файл, так что все столбцы m имеют тип Float64, не содержащий missing s, то вы можете преобразовать m в матрицу Float64 с помощью Matrix{Float64}(m) или получить матрицу с одной строкой:

m = Matrix{Float64}(CSV.read("./file.csv", header=0, delim=';'))
# or with piping syntax
m = CSV.read("./file.csv", header=0, delim=';') |> Matrix{Float64}

readdlm, однако, обычно должно быть достаточно ипервое решение для таких простых CSV-файлов, как ваш.

3 голосов
/ 18 апреля 2019

Вы можете использовать

using DelimitedFiles
m = readdlm("./file.csv", ';', Float64)

(последний аргумент, указывающий тип, может быть опущен, если вы хотите Float64)

...