我想将numpy.array
数据保存到XML文件中,然后再次读取。以下是我的代码:
数组到字符串
arr=numpy.zeros((20))
s = str(arr)
但是这种方式会在字符串中生成输入密钥和' ['],#39; 字符。
字符串到数组
我应该删除回车键和' [',']'第一。然后使用numpy.fromstring
但我认为这不是一个很好的方法。 这不适用于二维阵列
答案 0 :(得分:2)
你正在混合使用两种不同的方法来做“字符串”:
a = numpy.zeros((20))
您可以在删除换行符并[]
之后,将str(a)
放入新的numpy.matrix()
构造函数中,并使用返回的值初始化numpy.array()
:
b = numpy.array(numpy.matrix(" ".join(str(a).split()).strip('[]')))
或者您可以将numpy.array.tostring()
与numpy.fromstring()
结合使用:
c = numpy.fromstring(a.tostring())
但是你试图做的混合和匹配不起作用。
答案 1 :(得分:1)
您可以轻松地将numpy数组转换为常规python列表,反之亦然。然后,您可以将列表的字符串表示形式存储到文件中,从文件中加载它,将其转换回列表并转换为numpy数组。
>>> list(numpy.zeros(4))
[0.0, 0.0, 0.0, 0.0]
>>> numpy.array([0.0, 0.0, 0.0, 0.0])
array([ 0., 0., 0., 0.])
使用map
功能,这也适用于2D阵列。
>>> map(list, numpy.zeros((2, 3)))
[[0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]
>>> numpy.array([[0.0, 0.0], [0.0, 0.0]])
array([[ 0., 0., 0.],
[ 0., 0., 0.]])
但是,如果数组非常大,使用numpy.save
和numpy.load
存储它可能仍然更好,并且仅使用XML文件存储该文件的路径以及注释。
答案 2 :(得分:0)
除了使用save and load将ndarray转储到.npy文件并在xml中注明该文件的详细信息之外,您还可以使用Nils Werner所述的数据创建一个字符串。