[Numpy-discussion] empty data matrix (are they really empty ?)

Christopher Barker Chris.Barker at noaa.gov
Thu Dec 14 12:40:43 EST 2006


Sven Schreiber wrote:

>> In the old file I created a matrix  on the fly. I know that Numpy  and 
>> python cannot do that so I found a workaround

numpy can create matrices on the fly, in fact, you are doing  that with 
this code! The only thing it doesn't do is have a lateral that joins 
matrices the way matlab does -- you need to use vstack and the like.

>> First I create the empty matrix

To get better performance, you could create the entire empty matrix, not 
just one row -- this is the same as MATLAB -- if you know how big your 
matrix is going to be, it's better to create it first with "zeros". In 
numpy you can use either zeros or empty - just make sure that if you use 
empty, you fill the whole thing later, or you'll get garbage.

Your code:
lev2=empty((1,h))
# you've just created and empty single row
.
.
.
   lev2=vstack((lev2,clev))
#now you are creating a whole new array, with one more row than before.

The alternative:

lev2=empty((nstep+1,h)) 3 create the whole empty array
ir=1
for j in arange(1,nstep+2):
   a2=gr[arange(ir-1,ir+nstep)]
   clev=diag(dot(a2,dot(disper,a2.transpose())))
   lev2[j,:] = clev # fill in the row you've just calculated
   ir=ir+nstep+1
print lev2

I may have got some of the indexing wrong, but I hope you get the idea.

By the way, if you sent a complete, runnable sample, we can test out 
suggestions, and you'll get better answers.

-Chris

-- 
Christopher Barker, Ph.D.
Oceanographer

Emergency Response Division
NOAA/NOS/OR&R            (206) 526-6959   voice
7600 Sand Point Way NE   (206) 526-6329   fax
Seattle, WA  98115       (206) 526-6317   main reception

Chris.Barker at noaa.gov



More information about the NumPy-Discussion mailing list