np.where尝试选择两列时出错

2024-05-19 11:29:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图对sklearn的“Linnerud”数据集执行多元回归。 我有一个20x3的np数组,但我只想选择三列中的两列。 我可以使用以下方法添加一个独立变量:

X_for_1D_LR = X[:,np.where(np.array([feature_names_X])[0] == 'Situps')[0]]

但我在尝试添加另一个独立变量时遇到了问题

X_for_2D_LR = X[:,np.where(np.array([feature_names_X])[0] == 'Situps', np.array([feature_names_X])[0] == 'Chins')[0]]

以及获取错误“ValueError:应该同时给出x和y或两者都不给出” 任何帮助都将不胜感激


Tags: 数据方法fornames错误np数组sklearn
1条回答
网友
1楼 · 发布于 2024-05-19 11:29:44

重新构造代码,使逻辑更加清晰。Python是一种使用大量空格的语言;利用这个优势:

X_for_2D_LR = X[:,
                np.where(
                    np.array([feature_names_X])[0] == 'Situps',
                    np.array([feature_names_X])[0] == 'Chins'
                )[0]]

如果您阅读错误消息ValueError: either both or neither of x and y should be givennp.wheredocumentation,现在您可能会看到错误

您的条件(例如np.array([feature_names_X])[0] == 'Situps')在列表中,应使用布尔运算符(而不是逗号)分隔:

X_for_2D_LR = X[:,
                np.where(
                    np.array([feature_names_X])[0] == 'Situps' or
                    np.array([feature_names_X])[0] == 'Chins'
                )[0]]

相关问题 更多 >

    热门问题