如何将标题添加到numpy.ndarray

时间:2018-03-01 19:14:42

标签: python numpy

我有一个numpy.ndarray,尺寸为23411 x 3。 我想在矩阵的顶部添加标题:“summary”,“age”和“label”。以该顺序。

在:

matrix.shape

输出:

(23411L, 3L)

在:

type(matrix)

输出:

numpy.ndarray

我尝试使用numpy.recarray,但它没有用。任何建议??

4 个答案:

答案 0 :(得分:3)

您可以使用pandas实现此目的。

import pandas as pd
matrix = [...] # your ndarray

matrix = pd.DataFrame(data=matrix, columns=["summary", "age", "label"])

答案 1 :(得分:3)

你可以摆弄dtype:

>>> a = np.arange(12).reshape(4, 3)
>>> 
>>> dt = a.dtype
>>> 
>>> ahead = a.view(np.dtype([('summary', dt), ('age', dt), ('label', dt)]))
>>> 
>>> ahead
array([[(0,  1,  2)],
       [(3,  4,  5)],
       [(6,  7,  8)],
       [(9, 10, 11)]],
      dtype=[('summary', '<i8'), ('age', '<i8'), ('label', '<i8')])
>>> ahead['summary']
array([[0],
       [3],
       [6],
       [9]])

但请注意,就我所知,那些复合dtype数组并不是很有用:

>>> ahead @ ahead.T
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: invalid data type for einsum

举一个例子。

答案 2 :(得分:1)

创建自己的类,其成员包括numpy数组和标题字符串。

答案 3 :(得分:0)

我认为没有办法做到这一点。试试matrix.dtype。这应该给你类似dtype(&#39; int32&#39;)的东西。你的标题是字符串。

据我所知,你只能在numpy数组/矩阵中存储一种数据类型。