在ragged数组中查找和替换带有数值的字符串(Mathematica)

时间:2014-03-22 18:53:41

标签: arrays wolfram-mathematica

我有一个高斯.cube文件(http://paulbourke.net/dataformats/cube/),我希望找到并替换任何" NaN"此文件中的字符串,带有数值。导入我的.cube文件给了我一个带有字符串和数值的参差不齐的数组结构。我也可以选择将文件导入列表列表。

我尝试过ReplaceAll命令,但Mathematica似乎无法找到NaN字符串来替换它。我将我的初始数组定义为" cubefile":

newcubefile = cubefile /. "NaN" -> 1000000

ReplacePart命令也是如此。

一个(缩短的).cube文件示例,其中包含两个我要替换的NaN值:

{" grad_cube", " 3d plot", " reduced density gradient", "   10    \
0.000000    0.000000    0.000000", "   45    0.711111    0.000000    \
0.000000", "   45    0.000000    0.711111    0.000000", "   45    \
0.000000    0.000000    0.711111", "   6  0.0   0.000000   0.000000   \
0.000000", "   8  0.0   0.636571  29.627942  31.998664", "   1  0.0   \
2.452233  29.435574  31.997116", "   8  0.0   1.419780   1.757082  \
31.998335", "   1  0.0  29.967743   0.233347   0.002315", "   1  0.0  \
 4.896759   1.786080  31.998626", "   8  0.0   6.712387   1.593495  \
31.999036", "   6  0.0   7.348967  31.221446  31.999373", "   8  0.0  \
 5.928984  29.464534  31.999015", "   1  0.0   9.381256  30.988384   \
0.000684", "  0.10000E+03  0.10000E+03  0.10000E+03  0.10888E+01  \
0.16636E+01  0.24435E+01", "  0.35378E+01  0.50957E+01  0.73141E+01  \
0.10460E+02  0.14902E+02  0.21154E+02", "  0.29923E+02  0.42194E+02  \
0.59323E+02  0.83185E+02  0.11637E+03  0.16246E+03", "  0.22639E+03  \
0.31515E+03  0.43757E+03  0.55223E+03  0.41025E+03  0.41014E+03", "  \
0.55221E+03  0.43755E+03  0.31514E+03  0.22639E+03  0.16245E+03  \
0.11637E+03", "  0.83184E+02  0.59323E+02  0.42194E+02  0.29924E+02  \
NaN NaN"}

我该怎么做?

谢谢大家。

1 个答案:

答案 0 :(得分:1)

尝试

   StringReplace[#, "NaN" -> "0.0"] & /@ list

其中列表就是您在上面显示的内容。

Mathematica graphics