如何使用dtype在numpy中构造1D数组

时间:2013-03-21 20:44:09

标签: python arrays data-structures numpy scipy

我需要将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中的设置会让它发生会非常好=)

1 个答案:

答案 0 :(得分:2)

问题不在于你的dtype,而在于你正在使用错误形状的数组(1D而不是2D)。有很多方法可以解决重塑数据的问题,但这是我能想到的最简单的假设你真的需要像这样使用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形状意味着“不管是什么让事情变得有效,所以其他尺寸都是正确的。”