次の質問は、昨日の私のコースで思い付いた:行列の抽出行/列
は、例えば、私は計算から出てくる行列M = rand(3, 10)
を持っていると仮定しますODEソルバー。 Pythonで
、あなたは、例えば、3つの変数にM
の行を抽出するために
x, y, z = M
を行うことができますmatplotlib
でプロットします。我々は
M = M' # transpose
x = M[:, 1]
y = M[:, 2]
z = M[:, 3]
を行うことができジュリアで
この抽出を行うためのよりよい方法はありますか? 一つの方法は、
columns(M) = [ M[:,i] for i in 1:size(M, 2) ]
だろうが、これは高価なコピーを作成します
x, y, z = columns(M)
または
x, y, z = rows(M)
(パイソンに近づいて)少なくとも書くことができるようにするとよいでしょうすべてのデータ
これを避けるには、スライスを返す新しいイテレータタイプ、ColumnIterator
が必要ですか?これは、この素晴らしい構文を使用する以外の目的には有効でしょうか?
なぜ '列(M)= [スライス(M ,: 、i)for i in 1:size(M、2)] '?この構文の何が間違っていますか? –
コピーしないでください:columns(M)= [sub(M、:i)for i in 1:size(M、2)] –
はい、 - なぜ私はそれを考えなかったのか分かりません。 –