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

并得到错误"值错误:应该同时给出 x 和 y 中的任何一个或两者都不给出" 任何帮助将不胜感激!

重组代码以使逻辑更明显。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.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]]

最新更新