私は配列[2; 3]
と行列[ 1 3 4 5; 2 4 9 2]
を持っています。 ここでは、最初の行から2番目の要素を抽出し、2番目の行から3番目の要素を抽出して、[3 ; 9]
を取得します。私はそれをループでやっていましたが、もっと大きな配列で作業しているので、これらを避けたいと思います。別の配列のインデックスを持つ2次元配列から値を抽出する(ループなし)
1
A
答えて
4
あなたはlinear indexに(その行の添字と一緒に)列の添字のそれぞれを変換するためにsub2ind
を使用して、あなたの行列にインデックスにことを使用することができます。
A = [1 3 4 5; 2 4 9 2];
cols = [2; 3];
% Compute the linear index using sub2ind
inds = sub2ind(size(A), (1:numel(cols)).', cols);
B = A(inds)
% 3
% 9
代わりに、あなたはdiag
機能を利用することによりsub2ind
B = A((cols - 1) * size(A, 1) + (1:numel(cols)).');
% 3
% 9
2
よりもパフォーマンスになるだろう自分線形インデックスを計算することができ、あなたは、エレガントな1行の解を得ることができます。
A = [1 3 4 5; 2 4 9 2];
cols = [2; 3];
B = diag(A(:,cols))
% 3
% 9
ここにあるのはdiag(A(:,cols))
が行う:
A(:,cols)
がカラムを、cols
A
の列を選択A
のcols(k)
は、[3 4; 4 9]
を与える列に対応A(:,cols)
のk
。diag
は、k
のk
第11番目の対角要素がA(:,cols)
であるA(k,cols(k))
を返します。この行列の対角エントリを返します。
関連する問題
- 1. 2次元配列の値を持つ1次元配列のインデックス付け
- 2. JAVAは、私は2次元配列を持つ2次元配列(境界例外のうち配列インデックス)
- 3. 多次元配列2つのループ
- 4. Javaのオブジェクトの2次元配列から数値を抽出するには
- 5. Javaの2次元配列から値を出力する
- 6. Javascriptでの2次元配列からの3次元配列
- 7. 2次元配列の値
- 8. テキスト(文字の配列)から単語を抽出し、2次元配列に配置する関数
- 9. ジグザグ配列の2次元配列から1次元配列へのアルゴリズム
- 10. 私は以下の次の配列を持つ2つの次元配列PHP
- 11. 、私は次のような2次元配列を持つJavascript配列
- 12. numpy既存の配列から新しい2次元配列を作成し、インデックスとしての列値
- 13. 多次元配列を持つ配列のPHP配列
- 14. 2次元配列から行または列を抽出するC++
- 15. 2次元配列を2次元配列で作成する
- 16. 2次元配列内の非ゼロ要素を持つ列のインデックスを検索
- 17. 2次元配列から1次元配列へ
- 18. 昇順の数値を持つ2次元テーブルのスパイラル配列
- 19. JavaScriptのforループの2次元配列の値をプッシュする
- 20. インデックスJavaの2次元配列
- 21. 2次元配列の2次元配列をPHPで
- 22. 2次元配列での3d numpy配列のインデックス化
- 23. ネストされた配列を持つ多次元配列をループする
- 24. 2次元配列内の2つの値を交換する
- 25. 1次元配列を2つの配列に分割する
- 26. PHP 2次元配列は値の代わりにインデックスを出力します
- 27. 3次元配列を2次元配列に変換する
- 28. 1次元配列を2次元配列に変換する
- 29. 2次元numpy配列を3次元配列に配置
- 30. テキストファイル/配列から2次元配列を作成する