Numpy数组 - 多维逻辑比较

时间:2014-07-28 23:55:29

标签: python numpy

我正在尝试在二维数组中找到超过特定阈值的条目。各列的阈值由一维数组给出。举例来说,

[[1, 2, 3],
 [4, 5, 6],
 [2, 0, 4]]

是二维数组,我想看看列中的值是否大于

[2, 1, 3]

所以运行操作的输出应该是

[[False, True, False]
 [True, True, True],
 [False, False, True]]

谢谢!

2 个答案:

答案 0 :(得分:3)

好吧,假设示例中有错误,我只会这样做:

import numpy as np

A = np.array([[1, 2, 3],[4, 5, 6],[2, 0, 4]])
T = np.array([2, 1, 3])

X = A > T

哪个给出了

array([[False,  True, False],
   [ True,  True,  True],
   [False, False,  True]], dtype=bool)

答案 1 :(得分:0)

我认为您的示例中可能存在不一致之处(例如,2> 1为True,但2> 4为True) - 您能澄清一下吗?

假设您想知道,对于每一行,第一个列表中哪些值的列大于您提供的[2,1,3]列表,我建议如下:

import numpy as np

tmp = [[1, 2, 3],
      [4, 5, 6],
      [2, 0, 4]]

output = [ np.less([2, 1, 3], tmp[i]) for i in range(len(tmp))]

同样,请尝试greatergreater_equalless_equal获取您之后的结果: http://docs.scipy.org/doc/numpy/reference/routines.logic.html