0

我想将numpy.array数据保存到 XML 文件中,然后再次读取。以下是我的代码:

数组到字符串

arr=numpy.zeros((20))
s = str(arr) 

但是这种方式会在字符串中生成回车键和 '[',']'字符。

字符串到数组
我应该首先删除回车键和'[',']'。然后使用numpy.fromstring

但我认为这不是一个好方法。这不能在二维数组上工作

4

3 回答 3

2

您正在混合两种不同的“to string”方式:

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())

但是像你试图做的混合和匹配是行不通的。

于 2013-10-18T08:29:46.203 回答
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函数,这也适用于二维数组。

>>> 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.]])

但是,如果数组真的很大,最好还是使用 XML 文件来存储它numpy.savenumpy.load并且只使用 XML 文件来存储该文件的路径以及注释。

于 2013-10-18T08:22:05.407 回答
0

除了使用保存和加载将 ndarray 转储到 .npy 文件并在您的 xml 中记录该文件的详细信息之外,您还可以使用 Nils Werner 指出的数据创建一个字符串。

注意:您可能想查看HDFpytables(使用 hdf)。

于 2013-10-18T08:31:16.897 回答