繁体   English   中英

遍历numpy数组

[英]Iterate over numpy array

给定以下数组:

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]])

有什么提示可以解决该问题的简单(快速)方法吗? 非常感谢您的帮助!

我们可以使用布尔数组作为过滤索引。

>>> 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]

或枚举函数:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM