Mathematica减去具有缺失值的矩阵

时间:2012-06-10 18:34:40

标签: matrix wolfram-mathematica missing-data

在Mathematica中,我有一个缺少值的矩阵'a',我有一个矩阵'b',其维度与'a'相同。我想计算a-b,但如果缺少值,我用'NA'表示,我希望它保持为'NA'。你能帮帮我吗?请注意,'a'的维度为1百万X300。

谢谢!

2 个答案:

答案 0 :(得分:7)

一种方法是对结果使用替换规则,如下所示;

In[1]  {1, na, 3, na, 5} - {1, 2, 3, 4, 5}
Out[1] {0, -2 + na, 0, -4 + na, 0}

In[2]  {1, na, 3, na, 5} - {1, 2, 3, 4, 5}/. x_ + na -> na
Out[2] {0, na, 0, na, 0}

另一种方法是为UpValue定义na,使得涉及它的加法(和减法)总是会产生na;像这样:

In[3] na /: Plus[___, na, ___] := na
如果您要多次执行此操作,则需要

UpValues,一次性更换规则。

答案 1 :(得分:4)

你可以使用Indeterminate,因为它已经有了你想要的行为:

In[2]:= {1, na, 3, na, 5} - {1, 2, 3, 4, 5} /. na -> Indeterminate /. Indeterminate -> na

Out[2]= {0, na, 0, na, 0}

就个人而言,我只是使用Indeterminate开头,而不是NA