2016-10-14 94 views
2

鉴于以下数组:遍历numpy的阵列

x = np.array([[0,2,4,5,5.5,6,7],[4,5,6,7,2,3,4]]) 

基于该数组我需要创建另一个数组跳过的行单元中的第一列的值是> 5上。

所以结果应该喜欢这样:

([[5.5,6,7],[2,3,4]]) 

任何提示对于这个问题的简单(和快速)的方法? 非常感谢您的帮助!

回答

3

我们可以使用boolean array作为过滤索引。

>>> x[:, x[0] > 5] 
array([[ 5.5, 6. , 7. ], 
     [ 2. , 3. , 4. ]]) 
  • x[0]选择第一行
  • x[0] > 5创建布尔的阵列,检查一个元素是否为> 5或没有。 (这是[False, False, False, False, True, True, True]。)
  • 当我们编写some_array[boolean_array]时,我们只保留some_array中的boolean_array对应值为True的元素。例如,

    >>> numpy.array([2, 4, 6, 8])[numpy.array([True, False, False, True])] 
    array([2, 8]) 
    
  • 由于我们将选择列,布尔阵列x[0] > 5应该被放置在所述第二轴线上。我们选择整个第一轴与:。因此最终表达式是x[:, x[0] > 5]

0

还是枚举函数:

res = [] 
    for i, _ in enumerate(x): 
    res.append([]) 
    for j, val in enumerate(x[i]): 
     if j > 5: 
      res[i].append(val)