Python 如何设置numpy数组中每列的数据类型?

Python 如何设置numpy数组中每列的数据类型?,python,numpy,Python,Numpy,我想创建一个3列numpy数组(身高、体重和性别)。我必须相应地定义列的名称和数据类型。 我将使用以下数据示例: 1.8 70 1 1.6 65 0 我试过这个: Data = np.array([[1.80,70,1],[1.60,65,0]], dtype=[('Height (in m)', 'float'), ('Weight (in kg)', 'float'),

我想创建一个3列numpy数组(身高、体重和性别)。我必须相应地定义列的名称和数据类型。 我将使用以下数据示例:

1.8   70   1
1.6   65   0
我试过这个:

Data = np.array([[1.80,70,1],[1.60,65,0]],
                dtype=[('Height (in m)', 'float'), 
                       ('Weight (in kg)', 'float'), 
                       ('Gender', 'int')])
但是,在打印时,我得到以下信息:

[[( 1.8,  1.8,  1) (70. , 70. , 70) ( 1. ,  1. ,  1)]
[( 1.6,  1.6,  1) (65. , 65. , 65) ( 0. ,  0. ,  0)]]
与此相反:

[[ 1.8 70.   1. ]
[ 1.6 65.   0. ]]
通过以下方式获得:

Data = np.array([[1.80,70,1],[1.60,65,0]])
我做错了什么?
谢谢。

这是创建结构化数组的正确方法。注意显示和形状

In [230]: Data = np.array([(1.80,70,1),(1.60,65,0)],dtype=[('Height (in m)', 'float'), ('Weight
     ...:  (in kg)', 'float'), ('Gender', 'int')])
In [231]: Data
Out[231]: 
array([(1.8, 70., 1), (1.6, 65., 0)],
      dtype=[('Height (in m)', '<f8'), ('Weight (in kg)', '<f8'), ('Gender', '<i8')])
In [232]: Data.shape
Out[232]: (2,)
In [233]: Data['Weight (in kg)']
Out[233]: array([70., 65.])
[230]中的
Data=np.array([(1.80,70,1),(1.60,65,0)],dtype=[('Height(In m)'float'),('Weight')
…:(以千克为单位,'浮动',('性别','国际')]
In[231]:数据
Out[231]:
数组([(1.8,70,1),(1.6,65,0)],

dtype=[('Height(in m)”,您需要阅读有关复合数据类型和结构化数组的更多信息。您将数据作为元组列表提供。输入应与输出类似。对于这样的两组值,您需要一个具有3个字段的1d数组(形状(2,)。3列不是3D。请修复标题