Найти - Пользователи
Полная версия: csv из numpy.array
Начало » Python для новичков » csv из numpy.array
1
Belsen
У меня несколько array (созданных с помощью команды zeros(()) из numpy), что надо записать в файл этого формата. При использовании obj.writerow(Tablica) все строка таблицы пищется в одну ячейку, а мне надо чтобы каждое значение было в отдельной ячейке. Как этого можно добится?
Насколько я понимаю, вместо Tablica = должно передаваться (,,)?
Если да, то как так сделать?
Ed
Не могу воспроизвести вашу ситуацию:
zeros = numpy.zeros((10,10))
fh = open('/tmp/out.csv', 'w')
writer = csv.writer(fh)
writer.writerows(zeros)
fh.close()
# In [13]: cat /tmp/out.csv
#0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
#0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
#0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
#0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
#0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
#0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
#0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
#0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
#0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
#0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
И ваш пример тоже работает как следует:
writer.writerow(zeros[0])
writer.writerow(zeros[1,:])
#In [28]: cat /tmp/out.csv
#0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
#0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
Может вы при импорте разделитель задали другой :) ?
Belsen
И посмотри что получается в итоге в самом файле csv… В первой ячейке каждой стороки забиты ВСЕ значения…
Ed
А я что показываю? Не сам файл csv, что ли? Все там нормально - по нулю в каждой ячейке.
Belsen
У меня после выполнения этго же скрипта - в Excele получается такая же лобуда - все значения строки - в первой ячейки. Мне необходимо, чтобы файл корректно открывался имменно в Excel. (openOffice в Твоем случае, как я понимаю).
Установка диалекта не помогает.
shiza
А какой разделитель ячеек для CSV по умолчанию в экселе, такой и должен быть тут.
Как я понял, в разных версиях Экселя он разный
Belsen
по идее это должно учитываться при вводе диалекта, так что проблема скорее всего в виде строчек в np.array
shiza
У меня для 2007 экселя работает такой вариант (у него разделитель “;”):
import numpy
import csv

zeros = numpy.zeros((10,10))
fh = open('out.csv', 'wb')
writer = csv.writer(fh, delimiter=';')
writer.writerows(zeros)
fh.close()
Если у вас какой-то другой разделить в Экселе - подставьте его.
Belsen
shiza, спасибо, все заработало. Даже на 2003 Экселе.
Ed
Belsen
У меня после выполнения этго же скрипта - в Excele получается такая же лобуда - все значения строки - в первой ячейки. Мне необходимо, чтобы файл корректно открывался имменно в Excel. (openOffice в Твоем случае, как я понимаю).
Да нет у меня никаких офисов, я просто на файл посмотрел и увидел, что он нормален.
Кстати, CSV - это вроде всегда было аббревиатурой для 'comma-separated values'. Почему они в вашем экселе semicolon-separated по умолчанию я не знаю.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB