numexpr.Python ¹× NUMPYÀÇ ºü¸¥ ¼öÄ¡ ¹ßÇö Æò°¡ÀÚ. | |
Áö±Ý ´Ù¿î·Îµå |
numexpr. ¼øÀ§ ¹× ¿ä¾à
±¤°í
- ƯÇã:
- MIT/X Consortium Lic...
- °¡°Ý:
- FREE
- °Ô½ÃÀÚ À̸§:
- David M. Cooke, Tim Hochberg, Francesc Alted, Ivan Vilata
- °Ô½ÃÀÚ À¥»çÀÌÆ®:
- http://code.google.com/u/david.m.cooke/
numexpr. ű×
numexpr. ¼³¸í
ÆÄÀÌ½ã ¹× ¼ýÀÚ¸¦À§ÇÑ ºü¸¥ ¼öÄ¡ ¹è¿ Expluuator. NUMEXPRÀº NUMPY CANº¸´Ù ¿©·¯ ¹ø ´õ ºü¸¥ ´ÙÁß ¿î¿µÀÚ ¹è¿ Ç¥Çö½ÄÀ» Æò°¡ÇÏ´Â Python ¶óÀ̺귯¸®ÀÔ´Ï´Ù. Ç¥Çö½ÄÀ» ¹®ÀÚ¿·Î ¹Þ¾ÆµéÀÌ°í ºÐ¼®ÇÏ°í,º¸´Ù È¿À²ÀûÀ¸·Î ´Ù½Ã ÀÛ¼ºÇϸç ÆÄÀ̽ã Äڵ带 ´õ ºü¸¥ ÆÄÀ̽ã ÄÚµå·Î ÄÄÆÄÀÏÇÕ´Ï´Ù. C¿¡¼ Ç¥Çö½ÄÀ» ÀÛ¼ºÇÏ°í Àü¹®È µÈ JIT (just-in-time) ÄÄÆÄÀÏ·¯·Î ÄÄÆÄÀÏÇÏ´Â °ÍÀÌ ´ÙÀ½ °¡Àå ÁÁÀº ¹æ¹ýÀÔ´Ï´Ù. ·±Å¸ÀÓ¿¡ ÄÄÆÄÀÏ·¯°¡ ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù. Why IT WorkStphere´Â ¹è¿ Ç¥Çö½Ä Æò°¡¿¡ µÎ °¡Áö ±Ø´ÜÀÔ´Ï´Ù. °¢ 2 Áø ÀÛ¾÷Àº ¹è¿ ¿ä¼Ò¸¦ ÅëÇØ º°µµ·Î ½ÇÇàÇÏ°í Àӽà ¹è¿À» ¹Ýȯ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº numpy°¡ ¼öÇàÇÏ´Â °ÍÀÔ´Ï´Ù. 2 * a + 3 * b´Â 3 °³ÀÇ Àӽà ¹è¿À» a ¶Ç´Â b¸¸Å Å©°Ô »ç¿ëÇÕ´Ï´Ù. ÀÌ Àü·«Àº ¸Þ¸ð¸®¸¦ ³¶ºñÇÕ´Ï´Ù (¾î·¹ÀÌ°¡ Å« °æ¿ì ¹®Á¦Á¡). ¶ÇÇÑ 2 * a¿Í 3 * bÀÇ °á°ú°¡ ¹è¿ÀÌ Å« °æ¿ì ÃÖÁ¾ Ãß°¡¿¡ ´ëÇÑ Ä³½Ã°¡ ¾Æ´Ï±â ¶§¹®¿¡ CPU ij½Ã ¸Þ¸ð¸®¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ¾Æ´Õ´Ï´Ù. ´Ù¸¥ ±Ø´ÜÀº °¢ ¿ä¼Ò¸¦ ¹Ýº¹ÇÏ´Â °ÍÀÔ´Ï´Ù. xrange (len (a)) : c = 2 * a + 3 * b ÀÌ°ÍÀº ¸Þ¸ð¸®¸¦ Àý¾àÇÏ°í ij½Ã¿¡ ÁÁÁö¸¸ °¢ ¹Ýº¹ ÆÄÀ̽㿡¼´Â °¢ ÇÇ¿¬»êÀÚÀÇ À¯ÇüÀ» È®ÀÎÇÏ°í ¼±ÅÃÇؾßÇÕ´Ï´Ù. °¢ ÀÛ¾÷¿¡ ´ëÇÑ ¿Ã¹Ù¸¥ ·çƾÀÔ´Ï´Ù. ÀÔ·Â ¹è¿ÀÌ º¯°æµÇÁö ¾ÊÀ¸¹Ç·Î ù ¹ø° ¼öÇ¥¸¦ Á¦¿ÜÇÑ ¸ðµç ¼öÇ¥´Â ³¶ºñµË´Ï´Ù .NumexprÀº °£ÇæÀûÀ¸·Î Á¢±Ù ¹æ½ÄÀ» »ç¿ëÇÕ´Ï´Ù. ¹è¿Àº ûũ·Î 󸮵˴ϴ٠(ù ¹ø° Æнº´Â 256 °³ÀÇ ¿ä¼Ò¸¦ »ç¿ëÇÕ´Ï´Ù). ÆÄÀ̽ã ÄÚµå·Î º¸ÀÌ´Â °Íó·³ º¸ÀÔ´Ï´Ù. xrange (0, len (a), 256) : r0 = a r1 = b °öÇϱâ (r0, 2 , r2) °öÇϱâ (r1, 3, r3) add (r2, r3, r2) c = r2 add () add ()ÀÇ 3 Àμö Çü½ÄÀº »õ·Î¿î Àμö¿¡ °á°ú¸¦ ÀúÀåÇÏ´Â ´ë½Å¿¡ »õ·Î¿î Àμö¸¦ ÇÒ´çÇÏ´Â ´ë½Å Á¤·Ä. ÀÌ°ÍÀº ij½Ã¿Í ºÐ±â ¿¹Ãø °£ÀÇ ÁÁÀº ±ÕÇüÀ» ÀÌ·ê ¼ö ÀÖ½À´Ï´Ù. °¡»ó ÄÄÇ»ÅÍ´Â ÀüÀûÀ¸·Î C·Î ÀÛ¼ºµÇ¾î À§ÀÇ ÆÄÀ̽㺸´Ù ºü¸¨´Ï´Ù. Numexpr¿¡ ´ëÇÑ Á¤º¸¸¦ ´õ ¸¹ÀÌ Ã£À¸½Ê½Ã¿À. ¿ø·¡ ÀÛ¼ºÀÚ (µ¥À̺ñµå M. cooke)°¡ ÀÛ¼ºÇÑ NumexprÀÇ °³¿ä¸¦ ÀÐÀ¸½Ê½Ã¿À. »ç¿ëÇÏ´Â °ÍÀº °£´ÜÇÕ´Ï´Ù : >>> NP·Î NUMPPY °¡Á® ¿À±â >>> A = NP.ARANGE (1e6) # °í¼º´ÉÀ» À§ÇØ Å« ¹è¿À» ¼±Åà >>> B = NP.ARANGE (1E6) >>> ne.evaluate ( "a + 1 ") # °£´ÜÇÑ expertionArray () >>> ne.evaluate ( 'a * b-4.1 * a> 2.5 * b') # ´õ º¹ÀâÇÑ Onearray (, dtype = bool)¿Í ºü¸¥ ... : - ) >>> ½Ã°£ + b ** 2 + 2 * a * b10 ·çÇÁ, ·çÇÁ ´ç 3 : 33.3 ms ·çÇÁ >>> ±â°£ ( "a ** 2 + b ** 2 + 2 * A * B ") 100 ·çÇÁ, ÃÖ°í 3 : 7.96 ms ´ç ·çÇÁ ´ç 4.2 ¹è ºü¸¥ ¿ä±¸ »çÇ׺¸´Ù ºü¸£°Ô : ¡¤ ÆÄÀ̽㠡¤ NUMPY.
numexpr. °ü·Ã ¼ÒÇÁÆ®¿þ¾î