Python 用于基于结构的数组
Python for structure based array
我正在尝试处理一项要求,我试图查看结构数组的数据类型。
这是代码-
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
你能告诉我哪里错了吗?
numpy.zeros()函数returns给定形状和类型的新数组,带零。
语法:
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', '
使用'names'作为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
显示相同。
我正在尝试处理一项要求,我试图查看结构数组的数据类型。 这是代码-
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
你能告诉我哪里错了吗?
numpy.zeros()函数returns给定形状和类型的新数组,带零。
语法:
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', '
使用'names'作为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
显示相同。