首页 > 解决方案 > 尝试选择两列时出现 np.where 错误

问题描述

我正在尝试对来自 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”任何帮助将不胜感激!

标签: pythonnumpyscikit-learnregressionvalueerror

解决方案


重构你的代码,使逻辑更明显。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 given和.np.where

您的条件(例如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]]

推荐阅读