使用Maxima,如何将两个列表合并为一个嵌套列表?

问题描述 投票:0回答:1

我有一个x值列表,另一个是y值列表。我希望将它们排列在2列矩阵或嵌套列表中(可以轻松地将其转换成矩阵)。在Mathematica中,这是使用Thread [x-values,y-values]完成的,但是我找不到类似的Maxima函数。

我从这两个列表开始,

Tx:[1,2,3,4,5,6,7,8,9,10];

Ty:[86,85,84,89,85,89,87,85,82,85];

并手动制作,

ListT:[[1,86],[2,85],[3,84],[4,89],[5,85],[6,89],[7,87],[8, 85],[9,82],[10,85]];

所以我可以使用创建矩阵

MatrixT:apply('matrix,ListT);

是否有一种“快速”方法来执行此操作,因为我的真实数据集具有以这种方式出现的数百个数据点??

matrix maxima
1个回答
0
投票

我认为一种简单的方法是创建一个包含2行多列的矩阵,然后将其转置为2行多列的矩阵:

MatrixT: transpose (matrix (Tx, Ty));

至少我可以想到另外两种方法:

ListT: map (lambda ([a, b], [a, b]), Tx, Ty);
MatrixT: apply (matrix, ListT);

ListT: makelist ([Tx[i], Ty[i]], i, 1, length(Tx));
MatrixT: apply (matrix, ListT);

我经常使用transpose在面向行和面向列的变量之间来回切换。例如,假设您有一个mymatrix3,其中包含3列,并且希望为变量X,Y和Z分配列。你可以说

[X, Y, Z]: args (transpose (mymatrix3));

因为args(<some matrix>)返回矩阵行的列表,并且[X, Y, Z]: <some list of 3 things>表示并行分配。

请问您使用Maxima的目的是什么?我总是很想听听人们在做什么。 (我是Maxima开发人员和项目管理员。)

© www.soinside.com 2019 - 2024. All rights reserved.