A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://mail.python.org/pipermail/python-list/2005-September/306240.html below:

grouping array

grouping arrayFredrik Lundh fredrik at pythonware.com
Thu Sep 29 14:10:29 EDT 2005
pkilambi at gmail.com wrote:

> hi if I have an array
>
> say x = [[2,2,0,0,1,1],
>         [1,1,0,0,1,1],
>         [1,1,0,0,1,1]]
> I basically want to group regions that are non zero like I want to get
> the coordinates of non zero regions..as (x1,y1,x2,y2)
> [(0,0,2,1),(0,4,2,5)] which show the top left(x1,y1) and bottom
> right(x2,y2) corners of each group.hope i am clear.

given your definitions, neither (0, 0, 2, 1) nor (0, 4, 2, 5) are clusters
in your data.  assuming that your description is wrong but your data is
correct, and your clusters are always this simple, here's a snippet that
does what I think you want:

x = [[2,2,0,0,1,1],
     [1,1,0,0,1,1],
     [1,1,0,0,1,1]]

# http://www.pythonware.com/products/pil/
import Image

h = len(x)
w = len(x[0])

data = []
for row in x:
    data.extend(row)

im = Image.new("L", (w, h), None)
im.putdata(data)

def runlength(x):
    out = []
    u = 0
    for i, v in enumerate(x):
        if v:
            if not u:
                lo = i
        elif u:
            out.append((lo, i))
        u = v
    if u: out.append((lo, i+1))
    return out

xx, yy = im.getprojection()

for y in runlength(yy):
    y0, y1 = y
    for x in runlength(xx):
        x0, x1 = x
        print (y0, x0, y1-1, x1-1)

</F> 




More information about the Python-list mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4