【发布时间】:2019-08-21 12:05:19
【问题描述】:
我试图在 stackoverflow 中找到一个回答这个问题的线程,但我找不到。因此,如果重复,请提供链接。
用例很常见:
我有两个数组:X 包含二维数据点,y 包含标签 0 或 1。X 具有形状 (307, 2)y 具有形状 (307, 1 )
我想拥有X 中的所有行,其中y 中的相应行的值为1。
我尝试了以下代码:X[y==1]
但它会引发以下错误:
IndexError: boolean index did not match indexed array along dimension 1; dimension is 2 but corresponding boolean dimension is 1
我该怎么做?
【问题讨论】:
-
你可以试试
X[y, :] -
@MadPhysicist 这给出了一个完全不同的数组 -> shape = (307, 1, 2)。这不是我要找的。只是
y中对应行的值为 1 -> shape = (9, 2) 的行 -
@MadPhysicist 而
y不是问题中描述的布尔值数组。因此,为了掩盖,您必须编写一个条件,然后导致IndexError我也在问题中提到并找到了该问题的答案中所述的原因 -
X[y.ravel().astype(np.bool), :]