使用列名称索引数组

时间:2018-05-28 17:43:38

标签: python arrays numpy

我将相当大的输入文件加载到Numpy数组中(30列,超过10k行)。数据仅包含浮点数。为了简化数据处理,我想命名列并使用人类可读的名称访问它们。 AFAIK它只能使用结构化/记录数组。但是,如果我是对的,当我使用结构化数组时,我会丢失一些信息。例如:

x = np.array([(1.0, 2), (3.0, 4), (11, 22)], dtype='float64')
y = np.array([(1.0, 2), (3.0, 4), (11, 22)], dtype=[('x', float), ('y', float), ('z', float)])

两个数组都包含相同的数据和相同的dtype。可以使用列名访问y:

yIn [155]: y['x']
Out[155]: array([ 1.,  3., 11.])

不幸的是,当我使用结构化数组时,我松散(或者我得到了错误的印象?)这些基本属性。 x和y有不同的形状,y不能转置等。

In [160]: x
Out[160]: 
array([[ 1.,  2.],
       [ 3.,  4.],
       [11., 22.]])

In [161]: y
Out[161]: 
array([( 1.,  2.), ( 3.,  4.), (11., 22.)],
      dtype=[('x', '<f8'), ('y', '<f8')])

In [162]: x.shape
Out[162]: (3, 2)

In [163]: y.shape
Out[163]: (3,)

In [164]: x.T
Out[164]: 
array([[ 1.,  3., 11.],
       [ 2.,  4., 22.]])

In [165]: y.T
Out[165]: 
array([( 1.,  2.), ( 3.,  4.), (11., 22.)],
      dtype=[('x', '<f8'), ('y', '<f8')])

是否可以继续使用&#34;常规2D Numpy阵列&#34;并使用他们的名字访问列?

0 个答案:

没有答案