相对于另一列中的值对一列进行子集化

Subsetting One column with respect to values in other column

我在互联网上阅读了很多关于切片数组的帖子,但是 none 似乎回答了我的问题。

我有一个包含三列的 numpy 数组,分别是 A、B 和 Y。所有值都是 1 或 0。如果我在 A 列上应用过滤器,我想找出 Y 的结果值,即如果 A==0,那么我得到的 Y 值是多少。

例如,这是一个 numpy 数组

A  B  Y
0  0  1
1  0  0
0  0  1
0  0  0

所以如果我选择 A = 0,则 Y 变为 1,1,0。

当一列的结果取决于另一列中的值时,如果有人告诉我如何执行此操作(使用此示例),我将不胜感激。

您可以同时按行和列编制索引。第一维使用布尔索引,第二维使用整型索引:

A = np.array([[0, 0, 1],
              [1, 0, 0],
              [0, 0, 1],
              [0, 0, 0]])

B = A[A[:, 0] == 0, 2]   # array([1, 1, 0])
B = A[A[:, 0] == 0, -1]  # equivalent solution, negative indices supported

注意 ABY 等标签在常规 NumPy 数组中不存在。要选择特定的行或列,请使用 整数 索引,注意第一行或第一列的索引为 0A[:, 0] == 0 returns 用于过滤第一维(行)的布尔数组。