我正在尝试用 numpy 编写一个决策树学习器。为此,
x
值只需排序一次,之后我应该能够重用它们。x
,我通过i= np.argsort(x, 0)
获取其中的索引以对它们进行排序。所以 x[i]
返回排序后的列,这很棒。
但是,对于第一次分割后的所有内容,我只需要与节点
n
对应的行。我陷入了如何链接这些索引的困境。
例如,用这个数据
x = np.array([[1,8,7,4,3,9,0,2,5,6], [7,5,3,8,9,4,6,10,2,1]]).T
i = np.argsort(x, 0)
n = np.nonzero(x[:, 0] < 6)[0]
我想要
x[n]
但列的排序位置。
x[i[n], np.arange(2)]
适用于第一列(掩码 n
基于该列),但第二列包含错误的数据。
首先采用 x[n]
更改形状,之后我无法再使用 i
数组对其进行索引。
我有点迷失在这里,希望得到任何帮助。
如果我正确理解你的问题,你可以这样做:
print(x[i][n, :, 0])
打印:
[[0 6]
[3 9]
[4 8]
[6 1]
[7 4]
[8 3]]