วันพฤหัสบดีที่ 8 มิถุนายน พ.ศ. 2560

Python Data Analysis : Chapter 1 a simple application


.....................................................................................................

จากการทดสอบ หากเราต้องการ จะ สร้าง เวคเตอร์ a ที่ประกอบด้วย ลำดับของเลขที่ เกิดจาก ลำดับยกกำลัง 2 ส่วน b เป็น ยกกำลัง 3 แล้ว จาก Code ของ python ธรรมดา และ ส่วนของ numpy จะทำได้ดังนี้


def pythonsum(n):
   a = list(range(n))
   b = list(range(n))
   c = []
   for i in range(len(a)):
       a[i] = i ** 2
       b[i] = i ** 3
       c.append(a[i] + b[i])
   return c
print(pythonsum(10))
 ------------------------------------------------
 import numpy   
def numpysum(n):
  a = numpy.arange(n) ** 2
  b = numpy.arange(n) ** 3
  c = a + b
  return c
 
print(numpysum(10))

 ------------------------------------------------


จะเห็นได้ว่า numpy ไม่จำเป็นต้องใช้ loop for ในการช่วย เลย และยังสามารถ จัดการ บวกกันได้อย่างถูกต้อง ซึ่งช่วยให้เขียนง่ายขึ้นมาก
และยังช่วยให้การทำงานเร็วขึ้นอย่างมาก สามารถทำสอบได้โดยโค้ดต่อไปนี้

import sys
from datetime import datetime
import numpy as np 
def numpysum(n):
   a = np.arange(n) ** 2
   b = np.arange(n) ** 3
   c = a + b
   return c 
def pythonsum(n):
   a = list(range(n))
   b = list(range(n))
   c = []
   for i in range(len(a)):
       a[i] = i ** 2
       b[i] = i ** 3
       c.append(a[i] + b[i])
   return c 
size = int(sys.argv[1])
start = datetime.now()
c = pythonsum(size)
delta = datetime.now() - start
print("The last 2 elements of the sum", c[-2:])
print("PythonSum elapsed time in microseconds", delta.microseconds)
start = datetime.now()
c = numpysum(size)
delta = datetime.now() - start
print("The last 2 elements of the sum", c[-2:])
print("NumPySum elapsed time in microseconds", delta.microseconds)

ผลการ ทำงาน


พบว่า numpy นั้นสามารถ ดำเนินการได้เร็วกว่าเป็นอย่างมาก
แต่ ว่า อาเรย์ที่ ได้ print ออกมานั้น พบว่า ไม่มี , ซึ่งยังไม่ทราบว่าเพราะเหตุใด

ไม่มีความคิดเห็น:

แสดงความคิดเห็น