相关疑难解决方法(0)

在Mathematica中选择/删除矩阵中行/列列表的有效方法

这个问题在某种程度上延续了我在这里提出的问题:在Mathematica中删除矩阵列的简单方法是 @belisarius和@Daniel提供了非常有用的答案.

我通常要做的是从矩阵中提取特定的行和列,或者在删除指定的内容后剩下的内容.所以这可以正式写成,找到TakeOperator和Drop运算符,这样:

TakeOperator [A,{i1,..,ip},{j1,...,jq}] =(A [[ik]] [[jl]])(1 <= k <= p,1 <= 1 <= q)=Table[A[[ik]][[jl]],{k,p},{l,q}]

我们注意到Ic = {i'1,...,i'p'} = Complement[{1,...,Length[A]},{i1,...,ip}]; Jc = {j'1,... ,j'q'} = Complement[{1,...,Length[A]},{j1,...,jq}];

DropOperator [A,{i1,..,ip},{j1,...,jq}] =(A [[ik]] [[jl]])(1 <= k'<= p',1 < = l'<= q')=Table[A[[ik']][[jl']],{k',p'},{l','q}]

虽然Table如上所述,但以这种方式使用Table是非常低效的.

为了给出一个想法,我拿了@ belisarius的例子:

In: First@Timing[a = RandomInteger[1000, {5000, 5000}];]

Out:0.218

In:Clear[b,c]

In:First@Timing[
  b = Table[
    If[i < 100, If[j < 100, a[[i]][[j]], a[[i]][[j + 1]]], 
     If[j < 100, a[[i + …
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica matrix

4
推荐指数
1
解决办法
1926
查看次数

使用Delete从方形矩阵中删除行和列

给定:方形矩阵和表示要删除的行的索引的列表,它还同时表示要删除的列的索引(它是方形矩阵,因此只需要一个列表).

输出:方形矩阵,删除列表中的行和列列.

假设有效的索引列表.

这是一个例子 在此输入图像描述

所以上面说的是删除第二行和第四行,以及第二和第四列.

Delete[]无法想象如何使用同时删除行和列,我真的不想列出我想删除的每个单独的元素索引.

但我可以Delete用来删除行.

下面我解决了它,我首先删除了行,然后转换了矩阵,然后删除了新矩阵的行(这将是原始列的行),然后将结果转换回来获得我想要的.

像这样:

a = {{0, 5, 2, 3, 1, 0}, {4, 3, 2, 5, 1, 3}, {4, 1, 3, 5, 3, 2}, {4, 
    4, 1, 1, 1, 5}, {3, 4, 4, 5, 3, 3}, {5, 1, 4, 5, 2, 0}};
del = {{2}, {4}};
a = Delete[a, del];
a = Delete[Transpose[a], del];
(a = Transpose[a]) // MatrixForm
Run Code Online (Sandbox Code Playgroud)

我的问题:是否有更短的方式使用Delete(或其他一个专家技巧)以更好的方式做到这一点?

谢谢

wolfram-mathematica

2
推荐指数
1
解决办法
5193
查看次数

标签 统计

wolfram-mathematica ×2

matrix ×1