how to shrink a numarray array?
Diez B. Roggisch
deets at web.de
Thu Jun 30 17:16:04 EDT 2005
Qiangning Hong wrote:
> To draw a large array of data on a small panel, I need to shrink it to a
> given size. e.g:
>
> To draw numarray.arange(10000) on a panel of width of 100, I only need
> to draw the points of (0, 100, 200, 300, ...) instead of (0, 1, 2, ...).
> So I need a method to shrink it to an 100-item array.
>
> x[::len(x)/panel_width] will not work. If the panel's width is 60, that
> expression will return an array of 61 elements.
>
> I believe there is an existing function in numarray to do this, however
> English is not my mother tongue and math is not my speciality, I can't
> find it in the document full of math terms...
>
You can do that with bresenham's algortithm. But that's been sooo long
since I did that the last time... The basic idea is that you us the
larger of the values (your columncount) as a threshold. The you do
msomething like this:
columncount = 600
image_width = 60
v = 0
cols_to_pick = [0]
for i in xrange(columncount):
if v >= columncount:
v -= columncount
cols_to_pick.append(i)
v += image_width
Maybe a better idea is to try and find image scaling algorithms -they
might even do filtering for you.
Diez
More information about the Python-list
mailing list