[python] Referencia

balky vbalko na gmail.com
Pátek Únor 3 16:19:29 CET 2006


dtype sa zaviedlo teraz v poslednej verzii NumPy - 0.9.4 na 
sprehladnenie castovania poli. 
http://sourceforge.net/project/showfiles.php?group_id=1369&package_id=175103

je to nasledovnik scipy_core - teda ani nie tak nasledovnik ako 
premenovane scipy_core

btw cez vikend by mala vyjst bugfixova verzia

balky

David Necas (Yeti) wrote:

>On Fri, Feb 03, 2006 at 01:38:09PM +0100, balky wrote:
>  
>
>>no globals[A] nemozem pouzit pretoze....
>>
>>Asi musim viac osvetlit na com robim.
>>
>>Robim Celularny Automat. Je to vlastne pole buniek. Kazda bunka ma 
>>nejaky stav, ktory sa meni v kazdej iteracii na zaklade prechodovej 
>>funkcie. No a prechodova funkcia meni stav bunky na zaklade okolia bunky 
>>podla danych pravidiel CA. Okolie je bud
>>
>>Mooreove okolie
>>xxx
>>xbx
>>xxx
>>
>>alebo von Neumanove okolie
>>x
>>xbx
>>x
>>    
>>
>
>Problém jako stvořený pro C, jak datovým modelem, tak
>potřebou rychlosti jednoduchých operací... No nic.
>
>  
>
>>Toto vsak nie je podstatne. Podstatne je to, ze kvoli zrychleniu 
>>vypoctov, kazda bunka je trieda, ktora vie svoj stav a obsahuje 
>>referencie na svoje okolie. T.j. ma ako clensku premennu pole, v ktorom 
>>su referencie na susedov bunky. Cize
>>
>>vesmir = numpy.empty((x,y),dtype=object)
>>for x in xrange(x):
>> for y in xrange(y):
>>   bunka = vesmir[x][y]  
>>   bunka.okolie = numpy.empty((3,3),dtype=object)
>>   bunka.okolie[1][1] = vesmir[x-1][y-1]
>>   bunka.okolie[1][2] = vesmir[x][y-1]
>>   bunka.okolie[1][3] = vesmir[x+1][y-1]
>>   bunka.okolie[2][1] = vesmir[x-1][y]
>>  atd....
>>
>>Samozrejme, ze u seba to mam napisane inak - toto je nazorne pre pochopenie.
>>
>>Ako spravim to, ze ked zmenim napr. vesmir[5][5], aby sa mi zmeny 
>>reflektovali aj do okoli vsetkych buniek, ktore maju bunku vesmir[5][5] 
>>ako svoje okolie
>>
>>Dufam, ze som to vysvetlil jasne. Ak nie pytajte sa upresnim.
>>    
>>
>
>Problém je, že s pythonovskými poli to samozřejmě funguje:
>
>    class Cell:
>        pass
>
>    x = 5
>    y = 5
>    universe = [[Cell() for j in range(x)] for i in range(y)]
>    for ii, row in enumerate(universe):
>        for jj, cell in enumerate(row):
>            cell.neighbourhood = (universe[ii][(jj + 1) % x],
>                                  universe[ii][(jj + x-1) % x],
>                                  universe[(ii + 1) % y][jj],
>                                  universe[(ii + y-1) % y][jj])
>
>    print hasattr(universe[2][3], 'foo')
>    cell = universe[2][2]
>    cell.neighbourhood[0].foo = 'bar'
>    print universe[2][3].foo
>
>Nemám žádnou verzi numpy, která by znala dtype=object,
>(používám numarray) a nebudu si kupovat(!) dokumentaci
>numpy, takže co vlastně dělá s objekty, bude nejlepší se
>zeptat autora...
>
>Klíčová otázka je, zda
>
>    id(bunka.okolie[1][1]) == id(vesmir[x-1][y-1])
>
>Pokud ano, tak se při zjišťování, zda se změnil, díváš na
>špatný objekt, protože jeden objekt se nemůže zároveň změnit
>i nezměnit. Pokud ne, tak je otázka, jak k tomu dochází.
>
>Yeti
>
>
>--
>That's enough.
>_______________________________________________
>Python mailing list
>Python na py.cz
>http://www.py.cz/mailman/listinfo/python
>
>  
>




Další informace o konferenci Python