2013-03-21 62 views
2

我需要解析一个ndarray到一个固定的形状。我在使用dtype时需要帮助,因此它解析了整个数组,而不仅仅是第一个匹配。如何使用dtype在numpy中构造一维数组

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) 

如果有人能够解释D类,使它的发生将是非常好的)这个问题是不是与你的D型设置=

回答

2

,这是您使用的是错误形状的数组(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形状是指,“不管是什么让事情成功了,所以其他维度是正确的。“

+0

ValueError:无法指定输出类型两次。 – canesin 2013-03-21 21:56:37

+0

我想你已经知道了,但是我颠倒了.view()参数的顺序。修复它在我的编辑。抱歉! – 2013-03-22 13:13:39

相关问题