[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