相对于另一列中的值子集一列

时间:2019-01-26 18:26:20

标签: python arrays slice numpy-slicing

我在互联网上阅读了许多有关切片的文章,但是似乎没有人回答我的问题。

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

例如,这是一个numpy数组

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

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

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

1 个答案:

答案 0 :(得分: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数组不存在诸如ABY之类的通知标签。要选择特定的行或列,请使用整数索引,请注意第一行或列的索引为0A[:, 0] == 0返回一个布尔数组,该数组用于过滤第一个维度(行)。