This explanation should maybe go straight in our FAQ :-)
> On Jul 23, 2014, at 3:12 PM, Alireza Nejati <[email protected]> wrote: > > John, just to give some explanation: push! is there as an efficient push > operation - one that ideally takes O(1) time because it simply extends the > vector in-place rather than copying everything to a new vector. (In practice, > though, it takes slightly longer than O(1) time because of the overhead of > occasionally allocating a new array). Julia stores arrays in column-major > order, so you can push a new column on to a matrix by pushing the column to a > 1d array and then reshaping, as Ivar said. But you can't do the same with > rows, because there is no way to append a new row to a matrix in an in-place > fashion. You have to shift all the array elements around in memory. > > The suggestions above are both good, and another way would be to simply > create row matrix by appending columns instead. At the end, just transpose > the matrix. The transpose operation does add O(n) overhead but depending on > what you're doing a single transpose at the end could be much more efficient > than cat'ing at each iteration. > > > >> On Thursday, July 24, 2014 7:22:01 AM UTC+12, john pollack wrote: >> Hi. I want to create a 2-column array.It should be empty at first, then I >> should be able to add rows to it. I was able to do this by : >> >> A = Array(Float64,(0,2)) >> >> A = vcat(A , [ 1 2 ] ) >> >> However, I couldn't use push! function for this. Is it possible to use push! >> function for this aim, and are there any substantial performance differences >> between push! and vcat functions ? >> Thanks for any help.
