numpy.fromstring由任何空格分隔

时间:2015-08-07 16:06:00

标签: python arrays numpy io

我有一个文件¹,其中n维矩阵存储为:

1 2 3 4
5 6 7 8

9 10 11 12
13 14 15 16

精确尺寸存储在元数据中。 4和5由\n分隔,{em>不分隔。但是,numpy.fromstring('1 2\n3 4', sep=" ") 确实做了我想要的事情,尽管文档提示不然。我对依赖于与定义的行为不同的实现犹豫不决。

为什么numpy.fromstring("1 2\n3 4", sep=" ")numpy.fromstring("1 2\n3 4", sep="\n")给我(期望的)array([ 1., 2., 3., 4.]),并且是否有更强大的(如:对应于记录/定义的行为)具有相同的效果?

¹该文档是一个XML文件,其中树中最低元素的文本表示数字数据。我无法控制这种文件格式。

1 个答案:

答案 0 :(得分:0)

如果您得到的是您想要的(意味着array([ 1., 2., 3., 4.])是期​​望的行为),那么我相信这在numpy.fromstring的文档中解释,参数部分sep -

  

sep:str,可选

     

如果未提供或等效地为空字符串,则数据将被解释为二进制数据;否则,作为带有十进制数字的ASCII文本。同样在后一种情况下,该参数被解释为分隔数据中的数字的字符串; 元素之间的额外空格也会被忽略。

(强调我的)

在这种情况下,

\n被视为额外空格,因此会被忽略。请注意忽略并不意味着它之前和之后的元素变成单个元素,它们仍然是单独的数字。与\t类似的示例。

In [16]: np.fromstring('1\t2\t3\t4', sep=" ")
Out[16]: array([ 1.,  2.,  3.,  4.])
相关问题