загрузить csv в 2D-матрицу с numpy для построения графика

Учитывая этот файл CSV:

"A","B","C","D","E","F","timestamp" 611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291111964948E12 611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291113113366E12 611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291120650486E12 

Я просто хочу загрузить его как матрицу / ndarray с 3 строками и 7 столбцами. Однако по какой-то причине все, что я могу получить из numpy, это ndarray с 3 строками (по одной в строке) и без столбцов.

 r = np.genfromtxt(fname,delimiter=',',dtype=None, names=True) print r print r.shape [ (611.88243, 9089.5601000000006, 5133.0, 864.07514000000003, 1715.3747599999999, 765.22776999999996, 1291111964948.0) (611.88243, 9089.5601000000006, 5133.0, 864.07514000000003, 1715.3747599999999, 765.22776999999996, 1291113113366.0) (611.88243, 9089.5601000000006, 5133.0, 864.07514000000003, 1715.3747599999999, 765.22776999999996, 1291120650486.0)] (3,) 

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

  • python ravel vs. transpose при использовании в reshape
  • Изменить кадр данных pandas из строк в столбцы
  • Измените массив в NumPy
  • Это лучший способ добавить дополнительное измерение в массив numpy в одной строке кода?
  • переформатировать массив изображений
  • Использование имени столбца в качестве нового атрибута в пандах
  • Numpy - нарезание 2d строк или столбцов из массива
  • Как изменить форму данных
  • 3 Solutions collect form web for “загрузить csv в 2D-матрицу с numpy для построения графика”

    Чистый numpy

     numpy.loadtxt(open("test.csv", "rb"), delimiter=",", skiprows=1) 

    Проверьте документацию loadtxt .

    Вы также можете использовать модуль csv python:

     import csv import numpy reader = csv.reader(open("test.csv", "rb"), delimiter=",") x = list(reader) result = numpy.array(x).astype("float") 

    Вам придется преобразовать его в ваш любимый цифровой тип. Я думаю, вы можете написать все это в одной строке:

     result = numpy.array (list (csv.reader (open ("test.csv", "rb"), delimiter = ","))). astype ("float")
    

    Добавлено подсказку:

    Вы также можете использовать pandas.io.parsers.read_csv и получить связанный массив numpy который может быть быстрее.

    Я думаю, что использование dtype где есть строка с именами, запутывает рутину. Пытаться

     >>> r = np.genfromtxt(fname, delimiter=',', names=True) >>> r array([[ 6.11882430e+02, 9.08956010e+03, 5.13300000e+03, 8.64075140e+02, 1.71537476e+03, 7.65227770e+02, 1.29111196e+12], [ 6.11882430e+02, 9.08956010e+03, 5.13300000e+03, 8.64075140e+02, 1.71537476e+03, 7.65227770e+02, 1.29111311e+12], [ 6.11882430e+02, 9.08956010e+03, 5.13300000e+03, 8.64075140e+02, 1.71537476e+03, 7.65227770e+02, 1.29112065e+12]]) >>> r[:,0] # Slice 0'th column array([ 611.88243, 611.88243, 611.88243]) 

    Вы можете прочитать CSV-файл с заголовками в массив записей NumPy с помощью np.recfromcsv . Например:

     import numpy as np import StringIO csv_text = """\ "A","B","C","D","E","F","timestamp" 611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291111964948E12 611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291113113366E12 611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291120650486E12 """ # Make a file-like object csv_file = StringIO.StringIO(csv_text) csv_file.seek(0) # Read the CSV file into a Numpy record array r = np.recfromcsv(csv_file, case_sensitive=True) print(repr(r)) 

    который выглядит следующим образом:

     rec.array([ ( 611.88243, 9089.5601, 5133., 864.07514, 1715.37476, 765.22777, 1.29111196e+12), ( 611.88243, 9089.5601, 5133., 864.07514, 1715.37476, 765.22777, 1.29111311e+12), ( 611.88243, 9089.5601, 5133., 864.07514, 1715.37476, 765.22777, 1.29112065e+12)], dtype=[('A', '<f8'), ('B', '<f8'), ('C', '<f8'), ('D', '<f8'), ('E', '<f8'), ('F', '<f8'), ('timestamp', '<f8')]) 

    Вы можете получить доступ к названному столбцу, подобному этому r['E'] :

     array([ 1715.37476, 1715.37476, 1715.37476]) 
    Interesting Posts

    Как я могу изменить язык администратора Django?

    Get pip для работы с git и github-хранилищем

    Параметры кода де-кодирования

    Выпуклая оболочка в более высоких размерностях, нахождение вершин многогранника

    Как измерить совпадение изображения в оптическом дальномерном

    UnicodeEncodeError при использовании функции компиляции

    Как получить доступ с помощью ctypes к функциям, возвращающим пользовательские типы, закодированные в dll Delphi?

    Влияет ли резьба в GTK с Python в интроспекцию PyGObject?

    Matplotlib: аннотирование 3D-графика

    проверьте, находится ли строка в столбце dataframe pandas в списке

    Всегда верно при тестировании, если string == различные OR'ed альтернативы

    Что может заставить WordNetCorpusReader не иметь атрибута LazyCorpusLoader?

    Запретить новую строку в модуле протоколирования Python

    Как рассчитывается оценка scikit-learn cross_val_predict?

    Как изменить права пользователя и группы для каталога по имени?

    Python - лучший язык программирования в мире.