|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.05.2017, 10:25 | #1 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,338
|
NumPy и чтение/запись массива в файл
Изучаю Python.
ОС Winows 10 (64) Python 3.6.1 NumPu 1.12.1 ставил через pip. При работе с модулем NumPy столкнулся с такой проблемой: При записи массива в текстовый файл (5 строк, 2 столбца): Код:
TypeError: Mismatch between array dtype ('float64') and format specifier ('% .5f % .5f') В сети нашел ответ (годичной давности), из которого следует, что файл следует открывать в бинарной моде или перейти на NumPy 1.11.1: Код:
Возможно кто то решал этот вопрос? Поделитесь информацией. И да, в NumPy 1.11.1 это будет работать?
Как-то так, ...
|
12.05.2017, 11:44 | #2 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,338
|
Редактировать свой пост видимо поздно.
ОС Winows 10 (64) Перепроверил и переустановил Python. Была установлена 32-бит версия. Установил 64-бит. Теперь: Python 3.6.1 (64-bit) NumPu 1.13.0 (64-bit) При записи матрицы (например, массив 3х3) в текстовый файл, если файл открыт как текстовый: Код:
TypeError: Mismatch between array dtype ('float64') and format specifier ('%.18e %.18e %.18e') Так получается, что мой массив имеет тип float64, и этот тип не совпадает с заданным по умолчанию. Но если изменить тип данных на другой - такая же фигня. Ответ в сетях годичной давности... В нем рекомендуют открывать файл в бинарной моде. Код:
Но дело в том, что данные записываются в одну строку, даже если задать параметр delimiter = '\n'. И тут дело не в том, что можно писать через write() и формировать нужный вид в текстовом файле. Это просто и получается нормально. Но вот в NumPy есть и такой вариант, когда можно инициализировать массив, прочитав данные из форматированного текстового файла. Например: Код:
Но при чтении такого файла надо заранее знать из чего же он был сделан ... Возможно, что я сильно не ... Возможно, что этот метод, хотя и позиционируется как для сохранения в текстовом файле, так и не должен работать? В этом я сильно сомневаюсь. Но я новичок и ...
Как-то так, ...
|
12.05.2017, 11:52 | #3 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Как именно пишется? И чем вы смотрите? Может там просто \n без \r, а вы блокнотом открываете?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
12.05.2017, 12:24 | #4 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,338
|
Да, смотрел Блокнотом.
Но вот конкретно: Матрица 3х3 получена методом: Код:
Если смотреть FAR'ом, то там каждое число завершается символом 0A hex. Это Line Feed и в FAR - это столбец, но не матрица, т.к. группа символов должна повториться через 3 числа, как бы ... Ожидание вида в другом файле. Или я тут вновь что-то проглядел ... PS: Кажись начинаю вникать ... Сделал так и получил, см. третье вложение. np.savetxt(fh_o, MyMatr,fmt = ' %8.4f', delimiter = '\n\r' ) Если в FAR'e то ... Буду думать ... PSS: И о ДА ... а ... а ... Код:
Век учись ... Спасибо за подсказку.
Как-то так, ...
Последний раз редактировалось ViktorR; 12.05.2017 в 12:43. |
12.05.2017, 12:46 | #5 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
12.05.2017, 13:09 | #6 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,338
|
Обида берет за то, что потратил много времени и что ведь все это знал.
Да вот как придет беда ... В подобную ситуацию раньше попадал, да вот видимо мало били Не засело в кость мозга. Да и delimiter другую роль играет - это разделитель между числами, в данной ситуации, а не символ, который разделяет строки. Так что все заработало и без delimiter
Как-то так, ...
|
08.09.2018, 00:41 | #7 | |
Новичок
Джуниор
Регистрация: 08.09.2018
Сообщений: 1
|
Цитата:
|
|
08.09.2018, 12:21 | #8 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Какой той же? И тут же написано в чем была проблема.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
08.09.2018, 15:40 | #9 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,338
|
poili777
Возможно вам поможет эта ссылка: https://ru.wikipedia.org/wiki/%D0%9F...BE%D0%BA%D0%B8 Проблема была в моей голове, поскольку я знал, что в Windows и Linux символы завершения строки разные: \r\n для Windows и \n - для linux. Есть "неправильные" редакторы, например Блокнот, который требует наличия обоих символов в конце строки. Но, например, редактор в FAR или тот же WordPad уже правильно воспринимают ситуацию с комбинацией символов, которая завершает строку.
Как-то так, ...
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Чтение и запись в файл (С++) | ura11_98 | Помощь студентам | 1 | 23.05.2016 19:13 |
Вопрос Сохранение массива в файл и чтение массива из файла | vvzvlad | Помощь студентам | 2 | 05.11.2013 23:27 |
Запись и чтение символьного массива в файл/из файла (C++) | Noyabr | Помощь студентам | 6 | 22.01.2012 13:59 |
Чтение/запись массива объектов в файл | MrBrain | Общие вопросы .NET | 0 | 08.06.2010 10:44 |