我有三张桌子X,Y,Z
。虽然X
& Y
定义我的网格点Z
取决于X
和Y
的每个点。
x = Table[i, {i, 0, 10, 1}]
y = Table[j, {j, 0, 10, 1}]
z = Table[5*i + j, {i, 0, 10, 1}, {j, 0, 10, 1}]
现在我希望最终列表看起来像[{x1,y1,z1},{x2,y2,z2}}
我想从上面给出的表中创建一组相应的x,y,z
值。
答案 0 :(得分:6)
在这种情况下,您还可以使用Array
生成合并列表,如下所示:
Array[{##, 5 # + #2} &, {11, 11}, 0]
请参阅Function
和Slot
。 rcollyer已经展示了如何从中分离出x,y和z。
从不相关的列表x
和y
开始时,您可以使用Outer
生成合并列表:
Outer[{##, 5 # + #2} &, x, y, 1]
答案 1 :(得分:4)
除非您需要x
和y
列表,否则我会将其合并到一个Table
中,如下所示:
Table[{i, j, 5*i + j}, {i, 0, 10}, {j, 0, 10}]
注意,我删除了步长({i, 0, 10, 1}
- > {i, 0, 10}
),因为如果不包含它,它会隐式设置为1。
修改:如果您希望获得x
和y
列表,也可以执行以下操作
Table[{i, j, 5*i+j}, {i, x}, {j, y}]
从第7节开始,Table
除了起点和终点之外还接受值列表。这并不能解决您是否还需要z
的单独列表。在这种情况下,我将从第一个表单代码开始,并使用Transpose
(根据您的其他question)设置各个列表,如下所示:
coords = Table[{i, j, 5*i + j}, {i, 0, 10}, {j, 0, 10}];
{x, y, z} = Transpose @ coords;
答案 2 :(得分:2)
从
开始的一种方法x = Table[i, {i, 0, 10, 1}];
y = Table[j, {j, 0, 10, 1}];
z = Table[5*i + j, {i, 0, 10, 1}, {j, 0, 10, 1}];
是
Flatten[
MapThread[{Sequence @@ #1, #2} &,
{Outer[{#1, #2} &, x, y], z},
2
],
1
]
(我希望看到我在一周内尝试理解这一点),它可以提供你想要的东西。
这也有效:
p = {};
Do[
Do[
AppendTo[p, {x[[i]], y[[j]], z[[i, j]]}],
{j, 1, Length@y}
],
{i, 1, Length@x}
]
并给出相同的答案。