Numpy - 如何根据其他列中的二进制值计算列中的值?
Numpy - how to count values in column based on binary values in other columns?
我有一个只有二进制值的 2d numpy 数组,我正在尝试根据同一行的其他列的二进制组合来计算列中 1 的数量。
假设我有:
[[0,0,0,0],
[1,0,1,0],
[0,0,0,1],
[1,0,0,0],
[0,1,0,0],
[1,0,1,0]]
并且我希望能够计算第一列中 1 的数量,其中同一行中的其他列的值为 [0, 1, 0]
。我需要我的代码 return 2
。第 1 行和第 5 行就是这种情况。
我试着用面具来做这个,但它不是 return我正在寻找的结果:
test = numpy.asarray(
[[0,0,0,0],
[1,0,1,0],
[0,0,0,1],
[1,0,0,0],
[0,1,0,0],
[1,0,1,0]])
mask = test[:,[1, 2, 3]] == [0,1,0]
mask
哪个return
array([[ True, False, True],
[ True, True, True],
[ True, False, False],
[ True, False, True],
[False, False, True],
[ True, True, True]])
假设戴口罩是正确的方法,请问我拿到这个口罩后下一步该怎么做?
您希望每一行中的所有三个元素都匹配 [0,1,0]
,因此您的 mask
应该是:
mask = (test[:,1:] == [0,1,0]).all(axis=1)
out = test[mask,0].sum()
输出:
2
如果你想计算第一列中对应于相同配置的零,那么你可以在上面的 mask
中为第一列中的 0 添加一个过滤器:
out2 = test[mask&(test[:,0]==0),0].shape[0]
我有一个只有二进制值的 2d numpy 数组,我正在尝试根据同一行的其他列的二进制组合来计算列中 1 的数量。
假设我有:
[[0,0,0,0],
[1,0,1,0],
[0,0,0,1],
[1,0,0,0],
[0,1,0,0],
[1,0,1,0]]
并且我希望能够计算第一列中 1 的数量,其中同一行中的其他列的值为 [0, 1, 0]
。我需要我的代码 return 2
。第 1 行和第 5 行就是这种情况。
我试着用面具来做这个,但它不是 return我正在寻找的结果:
test = numpy.asarray(
[[0,0,0,0],
[1,0,1,0],
[0,0,0,1],
[1,0,0,0],
[0,1,0,0],
[1,0,1,0]])
mask = test[:,[1, 2, 3]] == [0,1,0]
mask
哪个return
array([[ True, False, True],
[ True, True, True],
[ True, False, False],
[ True, False, True],
[False, False, True],
[ True, True, True]])
假设戴口罩是正确的方法,请问我拿到这个口罩后下一步该怎么做?
您希望每一行中的所有三个元素都匹配 [0,1,0]
,因此您的 mask
应该是:
mask = (test[:,1:] == [0,1,0]).all(axis=1)
out = test[mask,0].sum()
输出:
2
如果你想计算第一列中对应于相同配置的零,那么你可以在上面的 mask
中为第一列中的 0 添加一个过滤器:
out2 = test[mask&(test[:,0]==0),0].shape[0]