Python 尝试创建带标签的numpy数组

Python 尝试创建带标签的numpy数组,python,arrays,numpy,Python,Arrays,Numpy,我想要一个numpy数组,其中包含值和每个值对应的标签。我正在使用这个数组进行线性回归,它将是方程y=Xb+误差中的X数据向量 我的X向量由大约20个变量组成,每个变量我都希望能够按名称引用,就像soX['variable1']。我最初使用字典来实现这一点,但意识到用于线性回归的scikit库需要一个numpy矩阵,因此我尝试构建一个标记为的numpy数组 我不断收到一个错误声明: TypeError: a bytes-like object is required, not 'int'. 这

我想要一个numpy数组,其中包含值和每个值对应的标签。我正在使用这个数组进行线性回归,它将是方程
y=Xb+误差
中的
X
数据向量

我的
X
向量由大约20个变量组成,每个变量我都希望能够按名称引用,就像so
X['variable1']
。我最初使用字典来实现这一点,但意识到用于线性回归的scikit库需要一个numpy矩阵,因此我尝试构建一个标记为的numpy数组

我不断收到一个错误声明:

TypeError: a bytes-like object is required, not 'int'.
这就是我正在做的:

X = np.array([3],dtype=[('label1','int')])
我最终希望有20个标记值,如下所示:

X = np.array([3,40,7,2,...],
             dtype=[('label1',int'),('label2','int'),('label3','int')...])

如果您能在这里提供语法方面的帮助,我将不胜感激。谢谢

因为有20个变量,内存不是问题,所以可以继续使用字典:

from collections import OrderedDict  # Dictionary that remembers insertion order
import numpy as np

dd = OrderedDict()
dd["Var1"] = 10
dd["Var2"] = 20
dd["Var3"] = 30

# make numpy array from dict:
xx = np.array([v for v in dd.values()])  

# make dict() from array:
xx2 = 2*xx
dd2 = OrderedDict((k, v) for (k,v) in zip(dd.keys(), xx2))

创建具有值的结构化数组的正确方法是使用元组列表:

In [55]: X
Out[55]: 
array([(3,)], 
      dtype=[('label1', '<i4')])

In [56]: X=np.array([(3,4)],dtype=[('label1',int),('label2',int)])

In [57]: X
Out[57]: 
array([(3, 4)], 
      dtype=[('label1', '<i4'), ('label2', '<i4')])
[55]中的
:X
出[55]:
数组([(3,)],

dtype=[('label1','谢谢,我使用了您的第一种方法,做了如下操作:
keyValues=[('A',0),('R',0),('N',0)]
In [58]: X.shape
Out[58]: (1,)

In [59]: X.dtype
Out[59]: dtype([('label1', '<i4'), ('label2', '<i4')])