以下问题在我当然昨天来了的列:提取行/矩阵成独立的变量
假设我有一个矩阵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)] –
是的,应该可以,谢谢! - 不知道为什么我没有想到它。 –