从numpy中撤消漂亮的印刷品

时间:2012-03-09 21:13:40

标签: python numpy

举个例子:

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

给出

[ 0.66666667  4.        ]

我如何取字符串:

S = "[ 0.66666667  4.        ]"

仅使用S来电将A转换回numpy?我有一个hackish解决方案,但似乎应该有一个numpy内置来做到这一点。我看了fromstring,但是当我直接使用它时,它给了我错误:

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

1 个答案:

答案 0 :(得分:3)

您需要fromstring(S, sep=' ')。您几乎将字符串解析为压缩二进制数据而不是可打印浮点数。字符串应该只包含数字和分隔符(空格),所以修剪它以摆脱括号。例如,S[1:-1]

你可能知道这一点,但让我们说清楚:这对于恢复计算结果(或从错误中恢复)可能很方便,但它不是存储和重新加载数据的好方法。这很不方便,你在转换中失去了精确度。您的函数应该返回一个数组而不是打印出来,如果您需要存储数据供以后的程序运行使用,请使用数字存储格式(例如,请参阅cPickle模块或为此目的提供的任何numpy - 注意fromstring也可以读取打包的二进制数据)