我有一个numpy的网格。我对这些要点进行了一些计算。我想过滤掉由于某种原因无法进行加权处理的点(除以零)。
//CustomAlertDialogPopUp
public void submitButton(View v) {
LayoutInflater inflater = getLayoutInflater();
View alertLayout = inflater.inflate(R.layout.alertXML, null);
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Alert");
alert.setView(alertLayout);
AlertDialog dialog = alert.create();
dialog.show();
EditText text1 = (EditText)findViewById(R.id.inputText);
TextView text2 = (TextView)findViewById(R.id.alertText);
String result = text1.getText().toString();
text2.setText(result);
}
答案 0 :(得分:1)
要使用这些z / ( y - x )
网格数组执行3D
,您可以创建有效网格数组的掩码。现在,有效的那些是y
和x
之间的任何一对组合都不相同的那些。因此,此蒙版的形状为(M,N)
,其中M
和N
分别是Y
和X
轴的长度。要让这样的掩码跨越X
和Y
之间的所有组合,我们可以使用NumPy's broadcasting
。因此,我们会有这样的面具 -
mask = Yout[:,None] != Xout
最后,再次使用广播沿着3D
数组的前两个轴广播掩码,我们可以执行这样的除法,并使用np.where
在无效的说明符和实际除法结果之间进行选择,就像这样 -
invalid_spec = 0
out = np.where(mask[...,None],Zout_3d/(Yout_3d-Xout_3d),invalid_spec)
或者,我们可以使用广播直接获得这样的输出,从而避免使用meshgrid
并在工作空间中使用那些重3D
个数组。我们的想法是同时填充3D
网格,并在运行中执行减法和除法计算。所以,实现看起来像这样 -
np.where(mask[...,None],Zout/(Yout[:,None,None] - Xout[:,None]),invalid_spec)