Me to napada, ale nejsem ted bohuzel u PC a na mobilu se kod pise spatne. Kazdopadne bych zrusil "while True" a test na deleni ctyrmi, udelal bych si promennou "idx" a z "dat" bych bral [I:i+3], ktere bych pak poslal funkci, ktera by spocitala dane 32-bitove cislo a
Pokud by ani to rychlostne nestacilo, zkusil bych ten cyklus dat na starost necemu z itertools a pripadne to jeste zrychlit pomoci psyco. Jirka On 02/05/2011, mol-pyt...@seznam.cz <mol-pyt...@seznam.cz> wrote: > > Čistě v Pythonu existujou věci jako array a struct moduly > http://docs.python.org/library/array.html > http://docs.python.org/library/struct.html > numpy neznám, náhledem do dokumentace mě zaujal memmap > http://docs.scipy.org/doc/numpy/reference/generated/numpy.memmap.html > > >> ------------ Původní zpráva ------------ >> Od: Radek Machulka <radek.machu...@gmail.com> >> Předmět: [python] Optimalizace >> Datum: 02.5.2011 11:36:14 >> ---------------------------------------- >> Zdravim, >> >> v souboru mam (krom jineho) ulozene 2D pole cisel. Cisla jsou 32bit float >> a >> jsou rozdelena vzdy do 4 po sobe jdoucich bytu. >> >> Pro vytvoreni pozadovaneho pole hodnot mam nasledujici funkci (informaci o >> >> rozmerech mam z jineho mista v souboru): >> >> from numpy import array >> from numpy import reshape >> from numpy import float32 >> >> def createMatrix(dat, shape): >> lst = [] >> i = 0 >> while True: >> try: >> if i % 4 == 0: >> lst.append(float(ord(dat[i]) << 3 * 8 | >> ord(dat[i + 1]) << >> 2 * 8 | ord(dat[i + 2]) << 1 * 8 | ord(dat[i + 3]))) >> i = i + 1 >> except IndexError: >> break >> return array(lst, float32).reshape(shape) >> >> Funkce funguje, ale je prilis pomala. Napada nekoho jak to cele napsat >> vykonove optimalneji. >> >> Dik >> Radek > _______________________________________________ > Python mailing list > Python@py.cz > http://www.py.cz/mailman/listinfo/python > _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python