我需要将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中的设置会让它发生会非常好=)
答案 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形状意味着“不管是什么让事情变得有效,所以其他尺寸都是正确的。”