代码之家  ›  专栏  ›  技术社区  ›  James Burgess

用变量切片多维数组

  •  0
  • James Burgess  · 技术社区  · 7 年前

    我正在编写一个方法,该方法接受一个二维双精度数组和一个int行号作为参数,并返回给定行中元素的最高值。

    看起来是这样的:

    function getHighestInRow(A, i)
            return(maximum(A[:i,:]))
    end
    

    我遇到的问题是当我用

    A[:i,:]
    

    我得到一个参数错误,因为 :i 制造 i 得到不同的对待。

    代码在另一个方向工作

    A[:,i,:]
    

    有办法逃出结肠吗?因此 一、

    1 回复  |  直到 7 年前
        1
  •  3
  •   Michael K. Borregaard    7 年前

    你的结肠有点奇怪。在这种情况下,您使用的是符号 :i i . 只是 getHighestInRow(A,i) = maximum(A[i,:]) 应该有效。

    编辑:正如丹·盖茨在对这个问题的评论中所说, getHighestInRow(A,i) = maximum(@view A[i,:]) 但是更有效,因为切片将分配一个临时的不必要的数组。