2017-07-25 58 views
0

我想查找numpy数组的列索引,其中列的所有元素均大于阈值。numpy获取列索引,其中所有元素都大于阈值

例如,

X = array([[ 0.16, 0.40, 0.61, 0.48, 0.20], 
      [ 0.42, 0.79, 0.64, 0.54, 0.52], 
      [ 0.64, 0.64, 0.24, 0.63, 0.43], 
      [ 0.33, 0.54, 0.61, 0.43, 0.29], 
      [ 0.25, 0.56, 0.42, 0.69, 0.62]]) 

在上述情况下,如果阈值是0.4,我的结果应该是1,3。

回答

4

您可以比较反对使用np.where每一列的min

large = np.where(X.min(0) >= 0.4)[0] 
0

一个通用的解决方案使用列表理解

threshold = 0.4 
rows_nb, col_nb = shape(X) 
rows_above_threshold = [col for col in range(col_nb) \ 
    if all([X[row][col] >= threshold for row in range(rows_nb)])] 
0
x = array([[ 0.16, 0.40, 0.61, 0.48, 0.20], 
     [ 0.42, 0.79, 0.64, 0.54, 0.52], 
     [ 0.64, 0.64, 0.24, 0.63, 0.43], 
     [ 0.33, 0.54, 0.61, 0.43, 0.29], 
     [ 0.25, 0.56, 0.42, 0.69, 0.62]]) 

threshold = 0.3 
size = numpy.shape(x)[0] 
for it in range(size): 
    y = x[it] > threshold 
    print(y.all()) 

尝试请。

相关问题