以下問題在我當然昨天來了的列:提取行/矩陣成獨立的變量
假設我有一個矩陣M = rand(3, 10)
散發出來計算的,例如一個ODE求解器。
在Python中,你可以做
x, y, z = M
到M
行提取到三個變量,例如用matplotlib
進行繪圖。
在朱莉婭我們可以做
M = M' # transpose
x = M[:, 1]
y = M[:, 2]
z = M[:, 3]
有沒有一個更好的辦法做到這一點的提取? 這將是很好能夠至少寫(接近Python)的
x, y, z = columns(M)
或
x, y, z = rows(M)
一種方法是
columns(M) = [ M[:,i] for i in 1:size(M, 2) ]
但這將會使昂貴的拷貝所有的數據。
爲了避免這種情況,我們需要一個新的迭代器類型ColumnIterator
,它返回切片?除了使用這個很好的語法之外,這對其他任何東西都有用嗎
爲什麼不'列(M)= [切片(M ,: ,i)for i in 1:size(M,2)]'?這個語法有什麼問題? –
無需複製:列(M)= [sub(M,:i)for i in 1:size(M,2)] –
是的,應該可以,謝謝! - 不知道爲什麼我沒有想到它。 –