Python 帮助有条件地使用另一个列表中的 'numpy.masked_where'
Python help using 'numpy.masked_where' conditionally from another list
我正在写一个天文观测模拟。我有一个数据数组,每 24 小时测量 1 次:
data = [0,1,2,3,4]
我有一个数组,它是 24 小时内 cloud/rain 的分钟数,四舍五入到最接近的小时:
weather = [0,60,120,180,0]
我想使用掩码数组根据天气数组中的值隐藏数据数组中的值。屏蔽对于进一步的绘图和数据分析很重要(而不是删除)。
因此,如果我只想显示停机时间小于 120 分钟的数据点,我会这样做:
downtime = 120
data_masked = np.ma.masked_where(weather < downtime, data)
这应该导致:
data_masked = [0, 1, ---, ---, 4]
但是我的data_masked好像是相反的。如果我在同一个轴上绘制我的数据和天气。我正在掩盖天气停机时间低于我的阈值的点。
我试过反转运算符,它似乎保留了所有内容。任何想法或者我是否错过了 numpy.ma 的要点?
谢谢!
使用numpy.ma
returns一个面具。也就是说,它 隐藏 (掩码)符合条件 weather < downtime
的所有内容。如果你想显示符合条件的一切,只需反转条件:
data = np.array([0,1,2,3,4])
weather = np.array([0,60,120,180,0])
downtime = 120
data_masked = np.ma.masked_where(weather >= downtime, data)
data_masked
那么输出将是:
masked_array(data = [0 1 -- -- 4],
mask = [False False True True False],
fill_value = 999999)
要访问数据,请使用 data_masked.data
。
你会想要使用
np.ma.MaskedArray(data,mask)
请注意,掩码指定要屏蔽的数据。另外,对于以下类型的操作
weather < downtime
要按您的预期工作,'weather' 需要是数组而不是列表,因此:
weather = np.array([0,60,120,180,0])
...
data_masked=np.ma.MaskedArray(data, weather >= downtime)
请注意,我使用“>=”而不是“<”来获得您需要的结果
我正在写一个天文观测模拟。我有一个数据数组,每 24 小时测量 1 次:
data = [0,1,2,3,4]
我有一个数组,它是 24 小时内 cloud/rain 的分钟数,四舍五入到最接近的小时:
weather = [0,60,120,180,0]
我想使用掩码数组根据天气数组中的值隐藏数据数组中的值。屏蔽对于进一步的绘图和数据分析很重要(而不是删除)。
因此,如果我只想显示停机时间小于 120 分钟的数据点,我会这样做:
downtime = 120
data_masked = np.ma.masked_where(weather < downtime, data)
这应该导致:
data_masked = [0, 1, ---, ---, 4]
但是我的data_masked好像是相反的。如果我在同一个轴上绘制我的数据和天气。我正在掩盖天气停机时间低于我的阈值的点。
我试过反转运算符,它似乎保留了所有内容。任何想法或者我是否错过了 numpy.ma 的要点?
谢谢!
使用numpy.ma
returns一个面具。也就是说,它 隐藏 (掩码)符合条件 weather < downtime
的所有内容。如果你想显示符合条件的一切,只需反转条件:
data = np.array([0,1,2,3,4])
weather = np.array([0,60,120,180,0])
downtime = 120
data_masked = np.ma.masked_where(weather >= downtime, data)
data_masked
那么输出将是:
masked_array(data = [0 1 -- -- 4],
mask = [False False True True False],
fill_value = 999999)
要访问数据,请使用 data_masked.data
。
你会想要使用
np.ma.MaskedArray(data,mask)
请注意,掩码指定要屏蔽的数据。另外,对于以下类型的操作
weather < downtime
要按您的预期工作,'weather' 需要是数组而不是列表,因此:
weather = np.array([0,60,120,180,0])
...
data_masked=np.ma.MaskedArray(data, weather >= downtime)
请注意,我使用“>=”而不是“<”来获得您需要的结果