用变量切片多维数组
问题描述:
我正在写一个方法,它接受一个二元数组和一个int行数作为参数,并返回给定行中元素的最高值。用变量切片多维数组
它看起来像这样:
function getHighestInRow(A, i)
return(maximum(A[:i,:]))
end
我遇到的问题是,当我与
A[:i,:]
切片阵列我得到的参数错误,因为:i
使i
得到区别对待。
代码工作在向另一个方向
A[:,i,:]
是否有一种方式来逃避结肠?所以i
被视为冒号后的变量?
答
你正在做一些奇怪的冒号。在这种情况下,您使用的符号:i
不是值i
。只需getHighestInRow(A,i) = maximum(A[i,:])
应该工作。
编辑:由于丹Getz在这个问题的评论中说,getHighestInRow(A,i) = maximum(@view A[i,:])
是更有效,虽然,因为切片将分配一个临时不必要的数组。
+1
谢谢迈克尔,看起来我需要阅读我的切片。 –
为了获得更好的性能,最好使用**视图**或使用'for'循环明确地编码它 –
您是这么认为的?值得在实践中测试。 –
'A [i,:''创建一个新的向量。对?这是浪费。 –