заголовок столбца numpysavetxt

1

Я использую np.savetxt для создания файла csv, но я не уверен, могу ли добавить пользовательские заголовки в каждый столбец. Например, я хочу, чтобы мой csv выглядел так: sample excel format

Для заголовков столбцов, желательно, я хотел бы, чтобы он увеличивался на 1 и, возможно, индексировал вперед, пропуская некоторые ints (у меня будут другие переменные, которые увеличивают/пропускают при формировании моего np-массива, поэтому я могу сохранить переменные в отдельном массиве если это работает).

Что касается заголовков строк, я буду читать в разных файлах в моем каталоге, поэтому было бы наиболее оптимально печатать имена файлов там (TypeA, TypeB и т.д.), В противном случае все, что увеличивается, также работает. Поддерживает ли savetxt это или что-то еще более оптимальное?

Если это поможет... У меня будет не менее 100 столбцов и 200 строк, поэтому вручную перечислять все они не будут работать слишком хорошо.

Теги:
csv
numpy
python-3.x

1 ответ

0
Лучший ответ

Если вы не зависите от использования комментариев в файле, вы можете сделать следующее:

import numpy as np
import string
someData=np.random.random(size=(5,4))
# Edit: OP asked for numeric headers in the comments,
# so here they are
columnNames=["Type%d" % (i+1) for i in range(someData.shape[1])]

# For the previous answer, uncomment both below
# letters=string.ascii_uppercase
# columnNames=["Type%s" % letter for letter in letters]


# Index header
columnNames.insert(0,"Index")
rowIndices=np.arange(someData.shape[0]).reshape((-1,1))
# Make sure the first row are integers and the rest floats
format="%i"
format=format+",%.8f"*someData.shape[1]
# Remember to remove the comment character!
np.savetxt("mydata.csv", np.concatenate([rowIndices,someData], axis=1),fmt=format,comments='',header=','.join(columnNames))

С размером 5x4 на someData это mydata.csv CSV:

Index,Type1,Type2,Type3,Type4
0,0.90379913,0.75924195,0.94299403,0.81502046
1,0.62159008,0.41111464,0.89520339,0.17943100
2,0.65283441,0.40989492,0.61787211,0.93547408
3,0.24923627,0.54666970,0.41175465,0.53969919
4,0.21083701,0.19248967,0.23727747,0.73555606
  • 0
    Это очень помогает, спасибо! Вместо string.ascii_uppercase знаете ли вы способ получить 'Type1 ... Type11, Type12 и т. Д.'? Я не смог найти ни одной строковой операции, которая бы проходила после одной цифры.
  • 0
    @ChrisTang обновлен!
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню