【问题标题】:Optimum way to mask a two-dimension array using a condition on a one-dimension array使用一维数组上的条件屏蔽二维数组的最佳方法
【发布时间】:2019-04-04 19:55:23
【问题描述】:

我有一个 MxN numpy 空气质量数据数组(M = 纬度,N = 经度)。我想对这些数据应用一个掩码,以便我屏蔽掉赤道以上的任何东西(纬度 > 0)。但是,我的纬度数据是一维的 (M)。

我可以想办法屏蔽这些数据,但它们似乎都太冗长且冗长。这就是为什么我想问你,在你看来,最好的方法是什么。

import numpy as np
from numpy.ma import masked_where

my_data = np.random.randn(10,5)
latitude = np.linspace(-5,4,10)
longitude = np.linspace(10,14,5)

# I would like something like this, if latitude had the same shape as my_data
masked_data = masked_where(latitude < 0, my_data)

到目前为止,我正在使用 np.tile 将纬度扩展到与 my_data 相同的形状。但是,我想知道是否有更智能的索引或解决方法。总之:您认为屏蔽 my_data 的最佳方法是什么?

谢谢

【问题讨论】:

    标签: python mask


    【解决方案1】:

    您可以直接索引my_datanumpy 将自动执行掩码的广播):

    my_data[latitude > 0]
    

    输出:

    (the last 4 rows of my_data)
    

    【讨论】:

    • 这很好而且很简单。谢谢你。作为问题的额外补充。如果我想在第二维 (N) 上包含条件怎么办?例如:纬度 > 0 AND 经度
    • my_data[(latitude &gt; 0) &amp; (longitude &lt; 13)] 会起作用的! numpy 索引实际上非常直观,一旦你习惯了它。 This 链接可能会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 2016-02-27
    • 2017-10-02
    • 2011-08-21
    • 2017-01-26
    • 1970-01-01
    相关资源
    最近更新 更多