如何解决如何将名称列添加到现有的numpy数组?
我正在尝试将列名添加到现有的numpy数组中。
在此question中,我看到.dtype.names
提供(并设置了)一个numpy数组的列名。
但是,当我有一个现有数组并尝试命名这些列时,会收到以下消息。
我确信这是一个基本问题,我想念一些非常基本的东西,但仍然找不到答案:
a = np.array([[1,2,3],[4,5,6]])
a.dtype.names = 'ColA','ColB','ColC'
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-247-793bf2e18e51> in <module>
1 a = np.array([[1,6]])
----> 2 a.dtype.names = ('ColA','ColC')
ValueError: there are no fields defined
编辑:
似乎只有结构化数组可以在numpy(numpy,named columns)中具有命名列,而numpy数组不能具有命名列。
解决方法
您可以将“普通”(非结构化)数组转换为结构化 数组,其中每一列都有其名称和类型。
首次导入:
import numpy.lib.recfunctions as rfn
假设您的源数组已创建为:
a = np.array([[1,2,3],[4,5,6]])
然后将其转换为结构化数组,运行:
b = rfn.unstructured_to_structured(a,np.dtype([('Col_1',int),('Col_2',('Col_3',int)]))
(列名和类型是任意的)。如果需要,您可以传递不同的 键入每一列,例如有些列可以是 float 类型。
结果是:
array([(1,3),(4,6)],dtype=[('Col_1','<i4'),'<i4')])
如果要按名称引用列,请运行b['Col_1']
得到array([1,4])
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。