举个例子:
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
答案 0 :(得分:3)
您需要fromstring(S, sep=' ')
。您几乎将字符串解析为压缩二进制数据而不是可打印浮点数。字符串应该只包含数字和分隔符(空格),所以修剪它以摆脱括号。例如,S[1:-1]
。
你可能知道这一点,但让我们说清楚:这对于恢复计算结果(或从错误中恢复)可能很方便,但它不是存储和重新加载数据的好方法。这很不方便,你在转换中失去了精确度。您的函数应该返回一个数组而不是打印出来,如果您需要存储数据供以后的程序运行使用,请使用数字存储格式(例如,请参阅cPickle
模块或为此目的提供的任何numpy - 注意fromstring也可以读取打包的二进制数据)