我有一个numpy.ndarray,尺寸为23411 x 3.我想在矩阵的顶部添加标题:“summary”,“age”和“label”。以该顺序。
在:
matrix.shape
日期:
(23411L, 3L)
在:
type(matrix)
日期:
numpy.ndarray
我尝试使用numpy.recarray但它没有用。有什么建议??
你可以用pandas实现这一目标。
import pandas as pd
matrix = [...] # your ndarray
matrix = pd.DataFrame(data=matrix, columns=["summary", "age", "label"])
你可以摆弄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
举一个例子。
创建自己的类,其成员包括numpy数组和标题字符串。
我认为没有办法做到这一点。试试matrix.dtype。这应该给你类似dtype('int32')的东西。你的标题是字符串。
据我所知,你只能在numpy数组/矩阵中存储一种数据类型。