0

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

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

例如,这里是一个 numpy 数组

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

因此,如果我选择 A = 0,则 Y 变为 1,1,0。

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

4

1 回答 1

1

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

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

请注意,常规 NumPy 数组不存在诸如AB、之类的标签。Y要选择特定的行或列,请使用整数索引,注意第一行或列具有 index 0A[:, 0] == 0返回一个布尔数组,用于过滤第一维(行)。

于 2019-01-26T18:36:59.397 回答