gpt4 book ai didi

python - 试图创建一个带标签的 numpy 数组

转载 作者:太空狗 更新时间:2023-10-30 02:43:23 25 4
gpt4 key购买 nike

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

我的 X 向量由大约 20 个变量组成,我希望每个变量都可以按名称引用,例如 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')...])

非常感谢对此处语法的任何帮助。谢谢!

最佳答案

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

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')])

但我要提醒你,这样的数组不是二维的(或矩阵),它是带有字段的一维的:

In [58]: X.shape
Out[58]: (1,)

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

而且你不能跨领域做数学; X*2X.sum() 会产生错误。在像 y = X*b + error 这样的等式中使用 X 将毫无希望。

您可能最好使用真正的二维数值数组,并在头脑中或使用字典在标签和列号之间进行映射。

或者使用 Pandas。

关于python - 试图创建一个带标签的 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33532609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com