Отменить красивую печать от NumPy - PullRequest
2 голосов
/ 10 марта 2012

Как пример:

from numpy import *
A = array([2/3., 4])
print A

Придает

[ 0.66666667  4.        ]

Как мне взять строку:

S = "[ 0.66666667  4.        ]"

И преобразовать S обратно в A, используя только numpy вызовы? У меня есть хакерское решение, но, похоже, должен быть встроенный встроенный модуль, который делает это. Я посмотрел на из строки , но когда я использовал его напрямую, он выдает ошибку:

fromstring(S)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: string size must be a multiple of element size

1 Ответ

3 голосов
/ 10 марта 2012

Вам нужно fromstring(S, sep=' ').Вы почти проанализировали строку как упакованные двоичные данные вместо печатных операций с плавающей точкой.Строка должна содержать только цифры и разделитель (пробел), поэтому обрежьте ее, чтобы избавиться от скобок.Например, S[1:-1].

Возможно, вы знаете это, но давайте разберемся с этим: это может быть полезно для восстановления результатов вычислений (или восстановления после ошибки), но это не очень хороший способ храненияи перезагрузите данные.Это неудобно, и вы теряете точность при конвертации.Ваши функции должны возвращать массив вместо его распечатки, и если вам нужно сохранить данные для использования при последующем запуске программы, используйте цифровой формат хранения (например, см. Модуль cPickle или все, что numpy предоставляет для этой цели -обратите внимание, что fromstring также может читать упакованные двоичные данные)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...