fastest way to get Min from every column in a matrix?

前端 未结 6 2063
执念已碎
执念已碎 2020-12-16 16:13

What is the fastest way to extract the min from each column in a matrix?


EDIT:

Moved all the benchmarks to the answer below.

Using

6条回答
  •  醉梦人生
    2020-12-16 17:09

    Update 2014-12-17:

    colMins() et al. were made significantly faster in a recent version of matrixStats. Here's an updated benchmark summary using matrixStats 0.12.2 showing that it ("cmin") is ~5-20 times faster than the second fastest approach:

    $`Square Matrix`
         test elapsed relative
    2    cmin   0.216    1.000
    1     apl   4.200   19.444
    5 pmn.int   4.604   21.315
    4     pmn   5.136   23.778
    3    lapl  12.546   58.083
    
    $`Tall Matrix`
         test elapsed relative
    2    cmin   0.262    1.000
    1     apl   3.006   11.473
    5 pmn.int  18.605   71.011
    3    lapl  22.798   87.015
    4     pmn  27.583  105.279
    
    $`Wide-short Matrix`
         test elapsed relative
    2    cmin   0.346    1.000
    5 pmn.int   3.766   10.884
    4     pmn   3.955   11.431
    3    lapl  13.393   38.708
    1     apl  19.187   55.454
    
    $`Wide-tall Matrix`
         test elapsed relative
    2    cmin   5.591    1.000
    5 pmn.int  39.466    7.059
    4     pmn  40.265    7.202
    1     apl  67.151   12.011
    3    lapl 158.035   28.266
    
    $`Tiny Sq Matrix`
         test elapsed relative
    2    cmin   0.011    1.000
    5 pmn.int   0.135   12.273
    4     pmn   0.178   16.182
    1     apl   0.202   18.364
    3    lapl   0.269   24.455
    

    Previous comment 2013-10-09:
    FYI, since matrixStats v0.8.7 (2013-07-28), colMins() is roughly twice as fast as before. The reason is that the function previously utilized colRanges(), which explains the "surprisingly slow" results reported here. Same speed is seen for colMaxs(), rowMins() and rowMaxs().

提交回复
热议问题