【问题标题】:Python filter points in 2D space二维空间中的 Python 过滤器点
【发布时间】:2017-10-06 08:22:57
【问题描述】:

我有两个数组 x=[1,2,3,4]y=[1,0,0,1] 描述二维点 (x,y)。我想知道x>2 y==1 有多少个元素。最简单的方法是什么(没有任何循环)? 是否有可能做类似x[x>2] 的事情,但有两个条件?

【问题讨论】:

    标签: python arrays element multipleselection


    【解决方案1】:

    假设这些是 numpy 数组,因为您的 x[x>2] 是 numpy 语法,您只需要 and (&) 运算符:

    meet_cond = (x > 2) & (y == 1)
    how_many = meet_cond.sum()
    
    which_x = x[meet_cond]
    which_y = y[meet_cond]
    

    【讨论】:

    • 非常酷。展示meet_cond 的样子可能会很有趣。
    【解决方案2】:

    如果xy 作为点一起属于,您可能希望将它们打包到np 2D 数组中:

    >>> import numpy as np
    >>> x = np.array([1, 2, 3, 4])
    >>> y = np.array([1, 0, 0, 1])
    >>> xy = np.array([x, y]).T
    >>> xy[(x > 2) & (y == 1)]
    array([[4, 1]])
    >>> xy[(xy[:, 0] > 2) & (xy[:, 1] == 1)]
    array([[4, 1]])
    >>> np.count_nonzero((xy[:, 0] > 2) & (xy[:, 1] == 1))
    1
    

    【讨论】:

      猜你喜欢
      • 2012-12-03
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-28
      相关资源
      最近更新 更多