Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 15, 2008 23:43:41

Belsen
От:
Зарегистрирован: 2008-12-14
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

csv из numpy.array

У меня несколько array (созданных с помощью команды zeros(()) из numpy), что надо записать в файл этого формата. При использовании obj.writerow(Tablica) все строка таблицы пищется в одну ячейку, а мне надо чтобы каждое значение было в отдельной ячейке. Как этого можно добится?
Насколько я понимаю, вместо Tablica = должно передаваться (,,)?
Если да, то как так сделать?



Офлайн

#2 Дек. 16, 2008 09:59:28

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

csv из numpy.array

Не могу воспроизвести вашу ситуацию:

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
Может вы при импорте разделитель задали другой :) ?



Офлайн

#3 Дек. 16, 2008 10:12:41

Belsen
От:
Зарегистрирован: 2008-12-14
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

csv из numpy.array

И посмотри что получается в итоге в самом файле csv… В первой ячейке каждой стороки забиты ВСЕ значения…



Офлайн

#4 Дек. 16, 2008 11:17:34

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

csv из numpy.array

А я что показываю? Не сам файл csv, что ли? Все там нормально - по нулю в каждой ячейке.



Офлайн

#5 Дек. 16, 2008 11:25:10

Belsen
От:
Зарегистрирован: 2008-12-14
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

csv из numpy.array

У меня после выполнения этго же скрипта - в Excele получается такая же лобуда - все значения строки - в первой ячейки. Мне необходимо, чтобы файл корректно открывался имменно в Excel. (openOffice в Твоем случае, как я понимаю).
Установка диалекта не помогает.



Офлайн

#6 Дек. 16, 2008 11:28:24

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

csv из numpy.array

А какой разделитель ячеек для CSV по умолчанию в экселе, такой и должен быть тут.
Как я понял, в разных версиях Экселя он разный



Отредактировано (Дек. 16, 2008 11:41:00)

Офлайн

#7 Дек. 16, 2008 11:37:04

Belsen
От:
Зарегистрирован: 2008-12-14
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

csv из numpy.array

по идее это должно учитываться при вводе диалекта, так что проблема скорее всего в виде строчек в np.array



Офлайн

#8 Дек. 16, 2008 11:49:32

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

csv из numpy.array

У меня для 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()
Если у вас какой-то другой разделить в Экселе - подставьте его.



Офлайн

#9 Дек. 16, 2008 11:57:57

Belsen
От:
Зарегистрирован: 2008-12-14
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

csv из numpy.array

shiza, спасибо, все заработало. Даже на 2003 Экселе.



Офлайн

#10 Дек. 16, 2008 12:28:16

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

csv из numpy.array

Belsen
У меня после выполнения этго же скрипта - в Excele получается такая же лобуда - все значения строки - в первой ячейки. Мне необходимо, чтобы файл корректно открывался имменно в Excel. (openOffice в Твоем случае, как я понимаю).
Да нет у меня никаких офисов, я просто на файл посмотрел и увидел, что он нормален.
Кстати, CSV - это вроде всегда было аббревиатурой для 'comma-separated values'. Почему они в вашем экселе semicolon-separated по умолчанию я не знаю.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version