【问题标题】:How to get a list of dtypes from a numpy structured array?如何从 numpy 结构化数组中获取 dtypes 列表?
【发布时间】:2023-03-18 08:12:01
【问题描述】:

如何从 numpy 结构化数组中获取 dtypes 列表?

创建示例结构化数组:

arr = np.array([[1.0, 2.0],[3.0, 4.0]])

dt = {'names':['ID', 'Ring'], 'formats':[np.double, np.double]}
arr.dtype = dt
>>> arr
array([[(1., 2.)],
       [(3., 4.)]], dtype=[('ID', '<f8'), ('Ring', '<f8')])

一方面,很容易隔离列名。

>>> arr.dtype.names
('ID', 'RING')

然而,具有讽刺意味的是,dtype 属性似乎都没有显示单个 dtype。

【问题讨论】:

标签: numpy structured-array


【解决方案1】:

发现,尽管没有像.items() 这样的字典方法,你仍然可以调用dtype['&lt;column_name&gt;']

column_names = list(arr.dtype.names)
dtypes = [str(arr.dtype[n]) for n in column_names]
>>> dtypes

['float64', 'float64']

【讨论】:

  • dtype.fields 是一个字典,名称为键,(dtype, offset) 为值。
【解决方案2】:

或者,正如@hpaulj 暗示的那样,一步到位:

>>> [str(v[0]) for v in arr.dtype.fields.values()]

['float64', 'float64']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多