2

我需要将 ndarray 解析为固定形状。我在使用 dtype 时需要帮助,因此它解析整个数组,而不仅仅是第一个匹配项。

a
Out[193]: '1\t2\t3\t4\t5\t6\t'

ar = np.loadtxt(StringIO(a),dtype={'names':('x','y'),'formats':('f8','f8')}).view(np.recarray)

ar.x
Out[195]: array(1.0)

ar.y
Out[196]: array(2.0)

成为我想要的:

ar.x
Out[195]: array(1.0,3.0,5.0)

ar.y
Out[196]: array(2.0,4.0,6.0)

如果有人可以解释 dtype 中使其发生的设置将非常好 =)

4

1 回答 1

2

问题不在于您的 dtype,而在于您使用了错误形状的数组(一维而不是二维)。有很多方法可以用来重塑数据,但这是我能想到的最简单的方法,假设您确实需要像这样使用 loadtxt:

raw = np.loadtxt(StringIO(a), dtype='f8')
resh = raw.reshape(-1,2) # This will work for any (even) length initial data
rec = resh.view([('x', 'f8'), ('y', 'f8')], np.recarray)

请注意 -1 形状的意思是,“无论什么使事情顺利进行,其他维度都是正确的”。

于 2013-03-21T21:10:47.617 回答