Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有一种方法可以忽略用于屏蔽单独数组的数组中的屏蔽值?_Python_Arrays_Numpy_Matplotlib_Masked Array - Fatal编程技术网

Python 有没有一种方法可以忽略用于屏蔽单独数组的数组中的屏蔽值?

Python 有没有一种方法可以忽略用于屏蔽单独数组的数组中的屏蔽值?,python,arrays,numpy,matplotlib,masked-array,Python,Arrays,Numpy,Matplotlib,Masked Array,我的数据是若干相同长度的数据数组。我屏蔽了一个数组(y),然后使用该屏蔽数组屏蔽第二个数组(x)。I屏蔽x以去除指示设备错误的值(-9999)。然后我使用np.where()找出y低的位置(低于平均值1个标准偏差)来屏蔽x,以便在y低时看到x的值 我尝试过多次更改掩码,但其他numpy掩码数组操作都没有给出不同的结果。当mask=FALSE时,我试图编写一条逻辑语句来给出值,但在np.where()语句中我无法这样做 x = np.array([ 0, 1, 2, 3, 4, 5, 6, 7,

我的数据是若干相同长度的数据数组。我屏蔽了一个数组(y),然后使用该屏蔽数组屏蔽第二个数组(x)。I屏蔽x以去除指示设备错误的值(-9999)。然后我使用np.where()找出y低的位置(低于平均值1个标准偏差)来屏蔽x,以便在y低时看到x的值

我尝试过多次更改掩码,但其他numpy掩码数组操作都没有给出不同的结果。当mask=FALSE时,我试图编写一条逻辑语句来给出值,但在np.where()语句中我无法这样做

x = np.array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] )
y = np.array( [ 0, 1, -9999, 3, 4, 5, 6, 7, 8, -9999, 10 ] )

x = np.ma.masked_values( x, -9999 )
y = np.ma.masked_values( y, -9999 )

low_y = ( y.mean() - np.std( y ) )

x_masked = x[ np.where( y < low_y ) ]
我们预计x_掩蔽的平均值为0.5((0+1)/2),但由于x_掩蔽中包含的掩蔽-9999值(2和9),因此平均值为3


有没有办法排除屏蔽值,以便只获取未屏蔽值?

我想您应该屏蔽
x
其中
y!=-9999
。如果您对代码进行此更改,它将按您的预期工作

您也可以使用
np.where
来屏蔽

x = x[np.where(y != -9999)]
y = y[np.where(y != -9999)]

low_y = ( y.mean() - np.std( y ) )

x_masked = x[np.where( y < low_y)]

我想你会想掩盖
x
where
y!=-9999
。如果您对代码进行此更改,它将按您的预期工作

您也可以使用
np.where
来屏蔽

x = x[np.where(y != -9999)]
y = y[np.where(y != -9999)]

low_y = ( y.mean() - np.std( y ) )

x_masked = x[np.where( y < low_y)]

自版本1.8以来,numpy添加了和以处理丢失的数据。在您的例子中,因为-9999用于指示错误状态,根据定义,我认为它是
numpy.nan

In [76]: y = np.where(y==-9999, np.nan, y)

In [77]: low_y = (np.nanmean(y) - np.nanstd(y))

In [78]: low_y
Out[78]: 1.8177166753143883

In [79]: x_masked = x[ np.where( y < low_y ) ]  # [0, 1]
[76]中的
y=np.where(y==-9999,np.nan,y)
[77]中:low_y=(np.nanmean(y)-np.nanstd(y))
In[78]:低值
Out[78]:1.8177166753143883
在[79]:x_masked=x[np.其中(y
自1.8版numpy添加并处理缺失数据以来。在您的例子中,因为-9999用于指示错误状态,根据定义,我认为它是
numpy.nan

In [76]: y = np.where(y==-9999, np.nan, y)

In [77]: low_y = (np.nanmean(y) - np.nanstd(y))

In [78]: low_y
Out[78]: 1.8177166753143883

In [79]: x_masked = x[ np.where( y < low_y ) ]  # [0, 1]
[76]中的
y=np.where(y==-9999,np.nan,y)
[77]中:low_y=(np.nanmean(y)-np.nanstd(y))
In[78]:低值
Out[78]:1.8177166753143883
在[79]:x_masked=x[np.其中(y
当我这样做时,得到的结果与初始代码相同。这就是我在运行代码时得到的结果:掩码数组(数据=[0,1,2,9]我很惊讶您的结果是
[0,1,2,9]
。尝试
x=np.ma.masked_值(y,-9999)
在代码中,您应该得到
掩码数组(数据=[0,1,--,-,-]…
x=np.ma.masked_值(y,-9999)
worked!有没有办法让ma.masked_值屏蔽掉其他屏蔽值?如果我写:
x=np.ma.masked_值(y,--),它会工作吗
或类似的东西?如果我正确理解了您的问题,您不希望
--
显示在您的数组中吗?如果是这样,您只需使用
np来遵循上面的代码。其中
当我这样做时,我会得到与初始代码相同的结果。这是我运行您的代码时得到的结果:masked_数组(data=[0,1,2,9]我很惊讶你的结果是
[0,1,2,9]
。试试
x=np.ma.masked_值(y,-9999)
在你的代码中,你应该得到
masked_数组(data=[0,1,--,--]…
x=np.ma.masked_值(y,-9999)
worked!有没有办法让ma.masked_值屏蔽掉其他屏蔽值?如果我写:
x=np.ma.masked_值(y,--),它会工作吗
或类似的东西?如果我正确理解了您的问题,您不希望
--
显示在您的数组中?如果是这样,您只需使用
np来遵循我上面的代码即可。其中
起作用。因此,现在如果我想找到应用于它的任何值的平均值np.nan,我需要使用np.nanmean(),对吗?这很有效。所以现在如果我想找到应用于它的任何值的平均值np.nan,我需要使用np.nanmean(),对吗?