2017-07-25 82 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()) 

嘗試請。

相關問題