Python 将一列相对于另一列中的值进行子集设置
我在互联网上读过很多关于切片阵列的帖子,但似乎没有一篇能回答我的问题 我有一个numpy数组,它有三列,比如a、B和Y,所有的值都是1或0。如果我对a列应用过滤器,我想找出Y的结果值,也就是说,如果a==0,那么我得到的Y值是多少 例如,下面是一个numpy数组Python 将一列相对于另一列中的值进行子集设置,python,arrays,slice,numpy-slicing,Python,Arrays,Slice,Numpy Slicing,我在互联网上读过很多关于切片阵列的帖子,但似乎没有一篇能回答我的问题 我有一个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 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
请注意,常规NumPy数组中不存在诸如
A
、B
、Y
等标签。要选择特定的行或列,请使用整数索引,注意第一行或列的索引0
A[:,0]==0
返回一个用于筛选第一维度(行)的布尔数组。我投票结束这个问题,因为“教我使用numpy数组切片”不是问题。OP需要的是一个教程,或者numpy
文档,或者两者兼而有之,还有一些玩numpy
,而不是SO的答案。我已经编辑了这个问题