如何从Mathematica中的列表中调用元素的一部分?

时间:2014-09-11 05:41:53

标签: wolfram-mathematica

我在Mathematica做一些图像处理(作为家庭作业)。我正在使用这种列表:

{ 1 -> {0.0125858, 0.068223, 0.000278799}, 
  2 -> {0.174, 0.304475, 0.126911}, 
  3 -> {0.0160498, 0.0752313, 0.0005017}, 
  4 -> {0.040932, 0.14199, 0.00293246}, 
  5 -> {0.0154049, 0.0714337, 0.000877047}, 
  6 -> {0.0124556, 0.0525255, 0.000437179}, 
  7 -> {0.32205, 0.518331, 0.169125} }

我希望能够访问括号中的子列表(无箭头)并将元素除以一定的数字。

例如,如果我将此列表称为" x",则键入" x [[1]]"返回

1 -> {0.0125858, 0.068223, 0.000278799}

而我需要隔离

{0.0125858, 0.068223, 0.000278799}

是否有可以为我执行此操作的命令?

2 个答案:

答案 0 :(得分:1)

您已将图像表示为替换规则列表。提取点1的坐标非常简单:

In[3]:=    1 /. img
Out[3]:=   {0.0125858, 0.068223, 0.000278799}

其中/.是函数ReplaceAll的常用习惯用法。文档将准确解释发生了什么。

答案 1 :(得分:0)

为了完整起见,您可以使用直接Part规范引用规则的右侧:

     data = { a -> {0.0125858, 0.068223, 0.000278799}, 
              b -> {0.174, 0.304475, 0.126911} }

     data[[1,2]] -> {0.0125858, 0.068223, 0.000278799}
     data[[2,1]] -> b

马克的答案是通常的工作方式,但知道部分符号[[]]适用于除列表以外的其他内容非常方便。

我认为你在评论中提出的问题是一个很好的例子:假设你想要在右边操作,只留下左边,你可以这样做:

     data[[2, 2]] = 10 data[[2, 2]];

     data -> {a -> {0.0125858, 0.068223, 0.000278799},
              b -> {1.74, 3.04475, 1.26911}}