From: Paul A. on 25 Apr 2010 09:10 Hello, I have a simple, but very tricky, problem. I would like to fix it using an array. But matix are possibly more appropriate (even if matrix can not have 3 dimensional values, I think). I would like to populate a table (of 2 or 3 dimensions), from a vector. I think the best way to explain myself is to put some examples, with an array such as: >> # thanks to Rolf Pedersen's function (http://www.ruby-forum.com/topic/208620) >> table = make_array(3, 5) And now, if the seeder vector is: [1, 0], the result should be: => [ => [4, 3, 2, 1, 0], => [4, 3, 2, 1, 0], => [4, 3, 2, 1, 0] => ] If the vector is: [-1, 0] => [ => [0, 1, 2, 3, 4], => [0, 1, 2, 3, 4], => [0, 1, 2, 3, 4] => ] If the vector is: [-2, 0] => [ => [0, 0, 1, 1, 2], => [0, 0, 1, 1, 2], => [0, 0, 1, 1, 2] => ] If the vector is: [1, 1] => [ => [2, 2, 2, 1, 0], => [1, 1, 1, 1, 0], => [0, 0, 0, 0, 0] => ] If the vector is: [0, 1] => [ => [2, 2, 2, 2, 2], => [1, 1, 1, 1, 1], => [0, 0, 0, 0, 0] => ] Have you got a idea, or a plan? :s Any comments are welcome. Thank you. Best regards. -- Posted via http://www.ruby-forum.com/.
From: Rolf Pedersen on 25 Apr 2010 10:08 [Note: parts of this message were removed to make it a legal post.] Tip: Did you check out the Matrix and Vector classes in the Ruby Standard Library? http://ruby-doc.org/core/classes/Matrix.html http://ruby-doc.org/core/classes/Vector.html Best regards, -Rolf On Sun, Apr 25, 2010 at 3:10 PM, Paul A. <cyril.staff(a)gmail.com> wrote: > Hello, > > I have a simple, but very tricky, problem. I would like to fix it using > an array. But matix are possibly more appropriate (even if matrix can > not have 3 dimensional values, I think). > > I would like to populate a table (of 2 or 3 dimensions), from a vector. > > I think the best way to explain myself is to put some examples, with an > array such as: > > >> # thanks to Rolf Pedersen's function ( > http://www.ruby-forum.com/topic/208620) > >> table = make_array(3, 5) > > And now, if the seeder vector is: [1, 0], the result should be: > > => [ > => [4, 3, 2, 1, 0], > => [4, 3, 2, 1, 0], > => [4, 3, 2, 1, 0] > => ] > > If the vector is: [-1, 0] > > => [ > => [0, 1, 2, 3, 4], > => [0, 1, 2, 3, 4], > => [0, 1, 2, 3, 4] > => ] > > If the vector is: [-2, 0] > > => [ > => [0, 0, 1, 1, 2], > => [0, 0, 1, 1, 2], > => [0, 0, 1, 1, 2] > => ] > > If the vector is: [1, 1] > > => [ > => [2, 2, 2, 1, 0], > => [1, 1, 1, 1, 0], > => [0, 0, 0, 0, 0] > => ] > > If the vector is: [0, 1] > > => [ > => [2, 2, 2, 2, 2], > => [1, 1, 1, 1, 1], > => [0, 0, 0, 0, 0] > => ] > > Have you got a idea, or a plan? :s > Any comments are welcome. Thank you. > > Best regards. > -- > Posted via http://www.ruby-forum.com/. > >
From: Paul A. on 25 Apr 2010 11:54 Rolf Pedersen wrote: > Tip: Did you check out the Matrix and Vector classes in the Ruby > Standard > Library? > http://ruby-doc.org/core/classes/Matrix.html > http://ruby-doc.org/core/classes/Vector.html > > Best regards, > -Rolf Hi Rolf, Yes, but I really don't see how to process with. And matrix are limited to 2 dimensional arrays. But even just for 2D, it's looks like tricky. O_o -- Posted via http://www.ruby-forum.com/.
From: Colin Bartlett on 26 Apr 2010 12:21 On Sun, Apr 25, 2010 at 2:10 PM, Paul A. <cyril.staff(a)gmail.com> wrote: > ... I have a simple, but very tricky, problem. I would like to fix it using > an array. But matix are possibly more appropriate (even if matrix can > not have 3 dimensional values, I think). .. I must confess that from your examples, I'm not at all sure how you want to populate the "array" given the vector, so the following may not be any help at all. But: if you want multidimensional numerical arrays, then NArray might be useful. http://narray.rubyforge.org NArray is an Numerical N-dimensional Array class. Supported element types are 1/2/4-byte Integer, single/double-precision Real/Complex, and Ruby Object. This extension library incorporates fast calculation and easy manipulation of large numerical arrays into the Ruby language. NArray has features similar to NumPy, but NArray has vector and matrix subclasses. ... I haven't used it much myself, and I haven't used it recently. But I did manage to install and use it without using gems, so if I can do it that way it can't be all that difficult to install !
From: Masahiro TANAKA on 27 Apr 2010 09:52 Hi, Paul A. wrote: > And now, if the seeder vector is: [1, 0], the result should be: > > => [ > => [4, 3, 2, 1, 0], > => [4, 3, 2, 1, 0], > => [4, 3, 2, 1, 0] > => ] I guessed your intention and wrote it using NArray: require 'narray' def populate( shape, v ) ndim = shape.size max = shape.max a = NArray.int(ndim,*shape) shape.each_with_index do |sz,i| if v[i] == 0 a[i,false] = max else r = [1]*ndim r[i] = sz x = NArray.int(sz).indgen! x = sz-1-x if v[i] > 0 x /= v[i].abs a[i,false] = x.reshape!(*r) end end a.min(0) end populate( [5,3], [1,0] ) => NArray.int(5,3): [ [ 4, 3, 2, 1, 0 ], [ 4, 3, 2, 1, 0 ], [ 4, 3, 2, 1, 0 ] ] populate( [5,3], [-1,0] ) => NArray.int(5,3): [ [ 0, 1, 2, 3, 4 ], [ 0, 1, 2, 3, 4 ], [ 0, 1, 2, 3, 4 ] ] populate( [5,3], [-2,0] ) => NArray.int(5,3): [ [ 0, 0, 1, 1, 2 ], [ 0, 0, 1, 1, 2 ], [ 0, 0, 1, 1, 2 ] ] populate( [5,3], [1,1] ) => NArray.int(5,3): [ [ 2, 2, 2, 1, 0 ], [ 1, 1, 1, 1, 0 ], [ 0, 0, 0, 0, 0 ] ] populate( [5,3], [0,1] ) => NArray.int(5,3): [ [ 2, 2, 2, 2, 2 ], [ 1, 1, 1, 1, 1 ], [ 0, 0, 0, 0, 0 ] ] populate( [5,3,3], [2,1,1] ) => NArray.int(5,3,3): [ [ [ 2, 1, 1, 0, 0 ], [ 1, 1, 1, 0, 0 ], [ 0, 0, 0, 0, 0 ] ], [ [ 1, 1, 1, 0, 0 ], [ 1, 1, 1, 0, 0 ], [ 0, 0, 0, 0, 0 ] ], [ [ 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0 ] ] ] Masahiro Tanaka
|
Next
|
Last
Pages: 1 2 Prev: Preferred state machine gem? Next: Testing Rake tasks with RSpec... and Rake |