我在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}
是否有可以为我执行此操作的命令?
答案 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}}