7 ответов:
numpy.savetxtсохраняет массив в текстовый файл.import numpy a = numpy.asarray([ [1,2,3], [4,5,6], [7,8,9] ]) numpy.savetxt("foo.csv", a, delimiter=",")
tofile- это удобная функция для этого:import numpy as np a = np.asarray([ [1,2,3], [4,5,6], [7,8,9] ]) a.tofile('foo.csv',sep=',',format='%10.5f')на главной странице есть несколько полезных заметок:
это удобная функция для быстрого хранения данных массива. Информация о конечности и точности теряется, поэтому этот метод не является хороший выбор для файлов, предназначенных для архивирования данных или транспортировки данных между машинами с различным порядком байтов. Некоторые из этих проблем могут быть преодолены путем вывода данных в виде текстовых файлов, в счет скорость и размер файла.
Примечание. Эта функция не создает многострочные csv-файлы, она сохраняет все в одну строку.
запись массивов записей в виде файлов CSV с заголовками требует немного больше работы.
в этом примере читается CSV-файл с заголовком В первой строке, а затем записывается тот же файл.
import numpy as np # Write an example CSV file with headers on first line with open('example.csv', 'w') as fp: fp.write('''\ col1,col2,col3 1,100.1,string1 2,222.2,second string ''') # Read it as a Numpy record array ar = np.recfromcsv('example.csv') print(repr(ar)) # rec.array([(1, 100.1, 'string1'), (2, 222.2, 'second string')], # dtype=[('col1', '<i4'), ('col2', '<f8'), ('col3', 'S13')]) # Write as a CSV file with headers on first line with open('out.csv', 'w') as fp: fp.write(','.join(ar.dtype.names) + '\n') np.savetxt(fp, ar, '%s', ',')обратите внимание, что в этом примере не рассматриваются строки с запятыми. Чтобы рассмотреть кавычки для нечисловых данных, используйте
csvпакет:import csv with open('out2.csv', 'wb') as fp: writer = csv.writer(fp, quoting=csv.QUOTE_NONNUMERIC) writer.writerow(ar.dtype.names) writer.writerows(ar.tolist())
Если вы хотите писать в графе:
for x in np.nditer(a.T, order='C'): file.write(str(x)) file.write("\n")здесь ' a '- это имя массива numpy, а' file ' - переменная для записи в файл.
Если вы хотите написать в строке:
writer= csv.writer(file, delimiter=',') for x in np.nditer(a.T, order='C'): row.append(str(x)) writer.writerow(row)
если вы хотите сохранить массив numpy (например
your_array = np.array([[1,2],[3,4]])) в одну ячейку, вы можете перевести его сначала сyour_array.tolist().сохраните ее обычным способом в одну ячейку, с
delimiter=';'и ячейка в csv-файле будет выглядеть так[[1, 2], [2, 4]]тогда вы можете восстановить свой массив следующим образом:
your_array = np.array(ast.literal_eval(cell_string))
вы также можете сделать это с чистым python без использования каких-либо модулей.
# format as a block of csv text to do whatever you want csv_rows = ["{},{}".format(i, j) for i, j in array] csv_text = "\n".join(csv_rows) # write it to a file with open('file.csv', 'w') as f: f.write(csv_text)
Comments