WKC_CCC
(WKC CCC)
13 February 2007 17:19
1
Is there a fast way to return a subsection of an array object as there
is the minor function for a Matrix?
For example
testArray = [[1,2,3,4,5],
[7,8,9,10,11]]
How can the elements [[4,5],[10,11]] be extracted?
Thanks,
···
--
Posted via http://www.ruby-forum.com/ .
Tim_Pease
(Tim Pease)
13 February 2007 17:26
2
testArray.map {|x| x[-2..-1]}
I don't know if it is "fast", but it was certainly quick to write
Blessings,
TwP
···
On 2/13/07, WKC CCC <wai-kee.chung@uk.bnpparibas.com> wrote:
Is there a fast way to return a subsection of an array object as there
is the minor function for a Matrix?
For example
testArray = [[1,2,3,4,5],
[7,8,9,10,11]]
How can the elements [[4,5],[10,11]] be extracted?
Thanks,
Use the built-in matrix class:
require 'matrix'
m = Matrix.rows (1..5).to_a, (7..11).to_a
# extract the subsection at rows 0..1 and cols 3..4
m.minor(0..1, 3..4) #=> Matrix[[4, 5], [10, 11]]
See the matrix documentation for additional documentation:
http://ruby-doc.org/stdlib/libdoc/matrix/rdoc/index.html
···
* WKC CCC (wai-kee.chung@uk.bnpparibas.com) wrote:
Is there a fast way to return a subsection of an array object as there
is the minor function for a Matrix?
For example
testArray = [[1,2,3,4,5],
[7,8,9,10,11]]
How can the elements [[4,5],[10,11]] be extracted?
--
Paul Duncan <pabs@pablotron.org> pabs in #ruby-lang (OPN IRC)
http://www.pablotron.org/ OpenPGP Key ID: 0x82C29562
WKC_CCC
(WKC CCC)
13 February 2007 18:23
4
Thanks,
I've created the following function as an extention to class Array:
def Section(startRow,nRows,startCol,nCols)
part = self[startRow..startRow+nRows-1]
part = part.map{|x| x[startCol..startCol + nCols-1]}
return part
end
testArray=[[1,2,3,4,5],
[6,7,8,9,10],
[11,12,13,14],
[15,16,17,18]]
calling testArray.Section(2,2,2,2)
will return [[13,14],[17,18]]
which is essentially what the minor function but on an Array
···
--
Posted via http://www.ruby-forum.com/ .
Tim_Pease
(Tim Pease)
13 February 2007 19:27
5
def section( rows, cols )
self.slice(rows).map! {|c| c.slice(cols)}
end
testArray = [
[1,2,3,4,5],
[6,7,8,9,10],
[11,12,13,14,15],
[16,17,18,19,20]
]
testArray.section( 2...4, 2...4 )
[[13, 14],
[18, 19]]
Blessings,
TwP
···
On 2/13/07, WKC CCC <wai-kee.chung@uk.bnpparibas.com> wrote:
Thanks,
I've created the following function as an extention to class Array:
def Section(startRow,nRows,startCol,nCols)
part = self[startRow..startRow+nRows-1]
part = part.map{|x| x[startCol..startCol + nCols-1]}
return part
end
testArray=[[1,2,3,4,5],
[6,7,8,9,10],
[11,12,13,14],
[15,16,17,18]]
calling testArray.Section(2,2,2,2)
will return [[13,14],[17,18]]