【问题标题】:Python for structure based array用于基于结构的数组的 Python
【发布时间】:2021-12-19 03:27:14
【问题描述】:

我正在尝试处理我试图查看结构数组的数据类型的要求。 这是代码-

OrderDate = ['05-11-1996', '01-01-1971', '03-15-1969', '08-09-1983']
OrderAmount = [25.9, 44.8, 36.1, 29.4]
OrderNumber = [25, 45, 37, 19]
OrderName=['Ronaldo','Messi','Dybala','Pogba']
import numpy as np
data = np.zeros(3, dtype={'OrderDates':('OrderDate','OrderAmount', 'OrderNumber','OrderName'),
                      'formats':('U10','f8','i4','U10')})
print(data.dtype)

输出应该是:-

[('OrderDate', '<U10'), ('OrderAmount', '<f8'), ('OrderNumber', '<i4'), ('OrderName', '<U10')]

但我得到一个错误-

    ValueError  Traceback (most recent call last)
<ipython-input-10-727f000630c8> in <module>()
      1 import numpy as np
      2 data = np.zeros(3, dtype={'OrderDates':('OrderDate','OrderAmount', 'OrderNumber','OrderName'),
----> 3                           'formats':('U10','f8','i4','U10')})
      4 print(data.dtype)

1 frames
/usr/local/lib/python3.7/dist-packages/numpy/core/_internal.py in _makenames_list(adict, align)
     30         n = len(obj)
     31         if not isinstance(obj, tuple) or n not in [2, 3]:
---> 32             raise ValueError("entry not a 2- or 3- tuple")
     33         if (n > 2) and (obj[2] == fname):
     34             continue

ValueError: entry not a 2- or 3- tuple

你能告诉我哪里出错了吗?

【问题讨论】:

    标签: python list numpy tuples


    【解决方案1】:

    使用“名称”作为dict 键:

    In [178]: data = np.zeros(3, dtype={'names':('OrderDate','OrderAmount', 'OrderNu
         ...: mber','OrderName'),
         ...:                       'formats':('U10','f8','i4','U10')})
    In [179]: data
    Out[179]: 
    array([('', 0., 0, ''), ('', 0., 0, ''), ('', 0., 0, '')],
          dtype=[('OrderDate', '<U10'), ('OrderAmount', '<f8'), ('OrderNumber', '<i4'), ('OrderName', '<U10')])
    

    虽然我通常使用元组列表格式,默认dtype显示。

    【讨论】:

      【解决方案2】:

      numpy.zeros() 函数返回给定形状和类型的新数组,其中包含零。

      语法:

      numpy.zeros(shape, dtype = None, order = 'C')

      你使用了错误的语法,它应该是这样的:

      import numpy as np
      data = np.zeros((2,), dtype=[('OrderDate','U10'),('OrderAmount','f8') 
      ('OrderNumber','i4'),('OrderName','U10')]) # custom dtype
      print(data.dtype)
      

      [('OrderDate', '

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-14
        • 1970-01-01
        • 2018-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多