{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Numpy เบื้องต้น - 1D\n",
"\n",
"**30** minutes\n",
"\n",
" **วัตถุประสงค์**\n",
"\n",
"\n",
" หลังจากทำทำแล็บ นศ.จะสามารถ \n",
"\n",
"* Import ไลบรารี่ (Library) `numpy` และใช้งานไลบรารี่เบื้องต้นได้\n",
"* ดำเนินการทางคณิตศาสตร์กับข้อมูล `NumPy arrays` (อาร์เรย์ 1 มิติ) ได้\n",
"* Import ไลบรารี่ (Library) `matplotlib` และพล็อตกราฟอย่างง่ายได้\n",
"\n",
"Ref:\n",
"- https://docs.scipy.org/doc/numpy/user/quickstart.html\n",
"- https://docs.scipy.org/doc/numpy/user/basics.html\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## import ไลบรารี่ NumPy"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"หนึ่งในจุดเด่นของภาษาไพธอนคือ มีไลบรารีเสริมมากมายครอบคลุมการใช้งานที่หลากหลาย\n",
"\n",
"ในบรรดาไลบรารีต่างๆ **numpy** และ **matplotlib** เป็น 2 ไลบรารีที่มีความสำคัญและใช้กันอย่างแพร่หลายที่สุด\n",
"\n",
"เรามักจะใช้ numpy คำนวณและวิเคราะห์ข้อมูลเชิงตัวเลข จากนั้นนำข้อมูลออกมาแสดงผลเป็นกราฟและแผนภาพต่างๆ ให้เห็นภาพชัดเจนยิ่งขึ้นโดยใช้ matplotlib\n",
"\n",
"(หากใช้ไลบรารี numpy + matplotlib + scipy จะทำให้ไพธอนทัดเทียมกับโปรแกรม matlab (แมตแล็บ) โดยที่ไม่ต้องเสียค่าใช้จ่าย และเมื่อใช้ร่วมกับไลบรารี pandas + scikit-learn + ฯลฯ ก็จะทำให้ไพธอนเหนือกว่า matlab ขึ้นไปอีก)\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"
x และ y"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0, 1, 2, 3, 4, 9, 8, 7, 6, 5]\n"
]
}
],
"source": [
"x = [0, 1, 2, 3, 4]\n",
"y = [9, 8, 7, 6, 5]\n",
"\n",
"print(x+y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ผลที่ได้ไม่ใช่การนำอาร์เรย์มาบวกกัน ซึ่งผลควรจะได้เป็น [9, 9, 9, 9, 9] แต่กลับกลายเป็นการเอามาต่อกัน\n",
"\n",
"หากต้องการให้บวกเมทริกซ์จะต้องทำการวนซ้ำเพื่อให้มีการคำนวณที่ตัวส่วนประกอบแต่ละตัว\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[9, 9, 9, 9, 9]\n"
]
}
],
"source": [
"#z = [0, 0, 0, 0, 0]\n",
"z = [0 for i in x]\n",
"\n",
"for i in range(len(x)):\n",
" z[i] = x[i]+y[i]\n",
"print(z) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"จะเห็นว่ามีความยุ่งยาก หากสามารถทำให้เขียนแค่ x+y แล้วบวกกันได้เลย ชีวิตก็คงจะง่ายขึ้น!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"สิ่งที่จะตอบโจทย์นี้ได้ก็คือ numpy นั่นเอง \n",
"\n",
"ถ้า x และ y ไม่ใช่ลิสต์แต่เป็นออบเจ็กต์ ndarray ของ numpy แล้วละก็ x+y ก็จะเป็นการบวกอาร์เรย์ทันที นี่คือความสะดวกของ numpy\n",
"\n",
"แต่ไม่ใช่แค่นั้น นอกจากจะทำให้เขียนโค้ดสะดวกขึ้นแล้ว ยังทำให้การคำนวณเร็วขึ้นมากด้วย \n",
"\n",
"ไพธอนเป็นภาษาที่ถูกออกแบบมาเพื่อให้เขียนง่ายต่อการเขียนและมีความยืดหยุ่นสูง แต่ก็มีข้อเสียคือทำงานช้าเมื่อเทียบกับภาษาระดับที่สูงไม่มากอย่างภาษา C หรือ Fortan\n",
"\n",
"\n",
"numpy เป็นไลบรารีที่มีเบื้องหลังการทำงานเป็นภาษาซี ดังนั้นจึงมีความเร็วสูงในการคำนวณมากกว่า"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"import ไลบรารี่ก่อน"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"# Let’s install the Numpy library\n",
"# !pip install numpy\n",
"\n",
"# import numpy library\n",
"\n",
"\n",
"import numpy as np "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"เวลาที่เรียกชื่อฟังก์ชันต่างๆใน Numpy จะเรียกโดยขึ้นต้นด้วย np."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"np.array\n",
"\n",
"\n",
"เราลองเปลี่ยนชุดข้อมูล List ข้างต้นให้เป็นอาร์เรย์"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Help on built-in function array in module numpy:\n",
"\n",
"array(...)\n",
" array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0,\n",
" like=None)\n",
" \n",
" Create an array.\n",
" \n",
" Parameters\n",
" ----------\n",
" object : array_like\n",
" An array, any object exposing the array interface, an object whose\n",
" __array__ method returns an array, or any (nested) sequence.\n",
" dtype : data-type, optional\n",
" The desired data-type for the array. If not given, then the type will\n",
" be determined as the minimum type required to hold the objects in the\n",
" sequence.\n",
" copy : bool, optional\n",
" If true (default), then the object is copied. Otherwise, a copy will\n",
" only be made if __array__ returns a copy, if obj is a nested sequence,\n",
" or if a copy is needed to satisfy any of the other requirements\n",
" (`dtype`, `order`, etc.).\n",
" order : {'K', 'A', 'C', 'F'}, optional\n",
" Specify the memory layout of the array. If object is not an array, the\n",
" newly created array will be in C order (row major) unless 'F' is\n",
" specified, in which case it will be in Fortran order (column major).\n",
" If object is an array the following holds.\n",
" \n",
" ===== ========= ===================================================\n",
" order no copy copy=True\n",
" ===== ========= ===================================================\n",
" 'K' unchanged F & C order preserved, otherwise most similar order\n",
" 'A' unchanged F order if input is F and not C, otherwise C order\n",
" 'C' C order C order\n",
" 'F' F order F order\n",
" ===== ========= ===================================================\n",
" \n",
" When ``copy=False`` and a copy is made for other reasons, the result is\n",
" the same as if ``copy=True``, with some exceptions for `A`, see the\n",
" Notes section. The default order is 'K'.\n",
" subok : bool, optional\n",
" If True, then sub-classes will be passed-through, otherwise\n",
" the returned array will be forced to be a base-class array (default).\n",
" ndmin : int, optional\n",
" Specifies the minimum number of dimensions that the resulting\n",
" array should have. Ones will be pre-pended to the shape as\n",
" needed to meet this requirement.\n",
" like : array_like\n",
" Reference object to allow the creation of arrays which are not\n",
" NumPy arrays. If an array-like passed in as ``like`` supports\n",
" the ``__array_function__`` protocol, the result will be defined\n",
" by it. In this case, it ensures the creation of an array object\n",
" compatible with that passed in via this argument.\n",
" \n",
" .. note::\n",
" The ``like`` keyword is an experimental feature pending on\n",
" acceptance of :ref:`NEP 35 dtype ในกรณีนี้เป็นชนิดจำนวนเต็ม 64-bit)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dtype('int64')"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Check the type of the values stored in numpy array\n",
"\n",
"a.dtype"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ตอนสร้างสร้างอาร์เรย์ หากมีสมาชิกที่มีทศนิยมแม้แต่ตัวเดียวทั้งหมดก็จะกลายเป็น *float64* ทันที"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0. , 1. , 2. , 3. , 4. , 3.14])"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Create a numpy array with real numbers \n",
"\n",
"b = np.array([0, 1, 2, 3, 4, 3.14])\n",
"b"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0. , 1. , 2. , 3. , 4. ,\n",
" 3.14159265])"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Create a numpy array with real numbers \n",
"\n",
"b = np.array([0, 1, 2, 3, 4, 3.14159265359])\n",
"b"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"จะเห็นว่าข้อมูลในอาเรย์จะต้องเป็นข้อมูลที่มีชนิดเดียวกันและมีขนาดเท่ากันหมดทุกตัว หากตอนที่สร้างอาเรย์มีสมาชิกที่ชนิดต่างกันจะถูกทำให้เหมือนกันหมด!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ถ้าเราตรวจสอบชนิดของข้อมูล จะพบว่าเป็นชนิด numpy.ndarray"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"numpy.ndarray"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Check the type of array\n",
"\n",
"type(b)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"เราสามารถตรวจสอบชนิดของข้อมูลโดยเรียกแอตทริบิวต์ (attribute) dtype ในกรณีนี้เป็นชนิด float 64\n",
" ไม่ใช่จำนวนเต็ม"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dtype('float64')"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Check the value type\n",
"\n",
"b.dtype"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### การกำหนดค่าใหม่ให้กับอาร์เรย์ (เขียนทับข้อมูล)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"เช่นเดียวกับ List เราสามารถเปลี่ยนค่าอาร์เรย์เมื่อไหร่ก็ได้โดยการใส่ค่าใหม่ทับลงไป\n",
"\n",
"ตัวอย่าง เราสร้างอาร์เรย์ c ขึ้นมาก่อนโดยใช้ลิสต์"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([20, 1, 2, 3, 4])"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Create numpy array\n",
"\n",
"c = np.array([20, 1, 2, 3, 4])\n",
"c"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"เราสามารถเปลี่ยนค่าของสมาชิกตัวแรกให้เป็น 100"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([100, 1, 2, 3, 4])"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Assign the first element to 100\n",
"\n",
"c[0] = 100\n",
"c"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"เราสามารถเปลี่ยนสมาชิกตัวสุดท้ายให้มีค่าเป็น 0 ได้โดยใช้ดัชนีเชิงลบ (Negative indexing) เหมือนกับ List"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([100, 1, 2, 3, 100])"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Assign the last element to 0\n",
"\n",
"c[-1] = 100\n",
"c"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"เราสามารถกำหนดค่าให้กับสมาชิกมากกว่าหนึ่งตัวได้โดยระบุช่วงของข้อมูล ดังนี้ (ทำได้เหมือนกับ List)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([100, 500, 2, 300, 400])"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Set the fourth element and fifth element to 300 and 400\n",
"\n",
"c[3:5] = 300, 400\n",
"c"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"หากต้องการเปลี่ยนค่าของสมาชิกทุกตัวให้เป็น 100 ก็สามารถทำได้ (List ใชรูปแบบคำสั่งแบบนี้ทำไม่ได้)\n"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([100, 100, 100, 100, 100])"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c[:] = 100\n",
"c"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### การกำหนดค่าด้วยลิสต์ดัชนี (Integer array indexing)\n"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 1, 2, 3, 4])"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Recreate numpy array\n",
"\n",
"c = np.array([0, 1, 2, 3, 4])\n",
"c"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"เราสามารถใช้ลิสต์เป็นดัชนีเพื่อกำหนดเฉพาะดัชนีที่ต้องการได้\n",
"\n",
"เราจะสร้างลิสต์ `select` ขึ้นมา ซึ่งภายในมีเลขดัชนีหลายค่า"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [],
"source": [
"# Create the index list\n",
"\n",
"select = [0, 2, 4]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"เราสามารถใช้ลิสต์ดัชนีเป็นอาร์กิวเมนต์ในวงเล็บสี่เหลี่ยมได้\n"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 2, 4])"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Use List to select elements\n",
"\n",
"d = c[select]\n",
"d"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 2, 4])"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c[[0, 2, 4]]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"นอกจากนี้ยังสามารถใช้ลิสต์ดัชนีแก้ไขค่าของสมาชิกได้อีกด้วย ยกตัวอย่างเช่น เปลี่ยนค่าเป็น\n",
"100000"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([100000, 1, 100000, 3, 100000])"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Assign the specified elements to new value\n",
"\n",
"c[select] = 100000\n",
"c"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 1, 0, 3, 0])"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# c[0, 2, 4] = 0\n",
"c[[0, 2, 4]] = 0\n",
"c"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### แอตทริบิวต์และเมธอดอื่นๆ ของอาร์เรย์"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"นอกจากแอตทริบิวต์ dtype แล้ว ยังมีแอตทริบิวต์อื่นๆ อีกที่สามารถให้ข้อมูลของตัวอาเรย์นั้นๆ ได้ เช่น\n",
"\n",
"size\tจำนวนสมาชิกในอาเรย์, ndim\tจำนวนมิติของอาเรย์, shape\tรูปร่างของอาเรย์"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"เราจะเรียนรู้แอตทริบิวต์อื่นๆ ของอาร์เรย์โดยผ่านอาร์เรย์ a\n",
"\n",
"ก่อนอื่น สร้างอาร์เรย์ a เลขจำนวนเต็ม จำนวน 100 ตัวเลข โดยการเรียกใช้ฟังก์ชั่น randint()\n",
"\n",
"ฟังก์ชั่น randint() ใช้สุ่ม (Random) ตัวเลขจำนวนเต็ม โดยจะทำการสุ่มจำนวนเต็มที่อยู่ในช่วงที่กำหนด (low - high) ออกมาตามจำนวน size ที่กำหนด\n",
"\n",
"```python\n",
"numpy.random.randint(low, high=None, size=None, dtype=int)\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 24, -25, -44, -98, 86, 91, -83, 23, -26, -20, -95,\n",
" 17, -14, 45, 16, 32, 49, -86, -90, 51, -12, 69,\n",
" -57, -45, 17, 75, -1, 96, 69, -26, -98, -22, 53,\n",
" 24, 43, -27, 15, -10, 23, -6, 92, 73, 15, 60,\n",
" -6, 72, 63, 94, 60, -26, 78, 10, -48, 29, -58,\n",
" -31, -26, -33, -54, 31, 90, -64, 36, 62, -32, -40,\n",
" -76, 90, -100, -33, -96, -35, 20, 33, -10, 21, -78,\n",
" 48, 94, -74, 4, 85, 2, -92, 97, 18, 95, 21,\n",
" 81, 94, 29, -24, 53, -13, -51, 26, 81, 66, 64,\n",
" 38])"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = np.random.randint(-100,100,100)\n",
"a"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ดูข้อมูลกันก่อน โดยการพล็อตกราฟอย่างง่าย"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[size จำนวนสมาชิกในอาร์เรย์\n"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"100"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Get the size of numpy array\n",
"\n",
"a.size"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ndim\t(number of dimensions) จำนวนมิติของอาเรย์\n"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Get the number of dimensions of numpy array\n",
"\n",
"a.ndim"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"shape\tรูปร่างของอาเรย์ (จำนวนสามาชิกในแต่ละมิติ (dimension))\n",
"\n",
"ตอนนี้อาร์เรย์ที่สร้างขึ้นเป็นแค่ 1 มิติ"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(100,)"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Get the shape/size of numpy array\n",
"\n",
"a.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"แค่ถ้าเป็นอาร์เรย์ที่สร้างขึ้นเป็น 2 มิติ (2-dimension)"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [],
"source": [
"k = np.array([[1,2,3],\n",
" [4,5,6],\n",
" [7,8,9] \n",
" ])"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"k.ndim"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(3, 3)"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"k.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"NumPy ยังมีเมธอด (Method) สำหรับการคำนวณค่าทางสถิติสำหรับชุดข้อมูลที่เก็บในอาร์เรย์ เช่น \n",
"Mean, Max, Min, SD (Standard deviation) และ Var โดยเรียกด้วย mean(), max(), min(), std() และ var() ตามลำดับ เป็นต้น\n",
"\n",
"\n",
"ค่าเฉลี่ย (Mean) คือ ค่ากลางที่ได้จากการนำเอาข้อมูลแต่ละตัวมารวมกัน แล้วนำผลรวมที่ได้มาหารด้วยจำนวนข้อมูลทั้งหมด\n",
"\n",
"\n",
"ส่วนเบี่ยงเบนมาตรฐาน (SD; Standard Deviation) คือ ค่ารากที่สองของผลรวมของความแตกต่างระหว่างข้อมูลดิบกับค่าเฉลี่ยยกกำลังสอง (sum of squares ของผลต่าง) หารด้วยจำนวนข้อมูลทั้งหมด\n",
"\n",
"ค่าความแปรปรวน (Variance) คือ ค่าที่คำนวณมาจาก ค่าเบี่ยงเบนมาตรฐาน หรือ ส่วนเบี่ยงเบนมาตรฐาน ยกกำลัง 2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ค่าสูงสุด (max) ค่าต่ำสุด (min)"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"97"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Get the biggest value in the numpy array\n",
"\n",
"max_a = a.max()\n",
"max_a"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-100"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Get the smallest value in the numpy array\n",
"\n",
"min_a = a.min()\n",
"min_a"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ค่าเฉลี่ย (Mean)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ถ้าหาแบบ Manual ค่าเฉลี่ย (Mean) จะสามารถหาได้จาก ผลรวมทั้งหมด/จำนวน"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-57"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Cal by manual\n",
"sum_a = a[0]+a[1]+a[2]+a[3]+a[4] # +... หมดแรงก่อน \n",
"sum_a"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"958"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sum_a = 0\n",
"for n in a:\n",
" sum_a += n\n",
"sum_a"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ใช้คำสั่งที่สั้นกว่านั้น"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"958"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sum_a = sum(a[:])\n",
"sum_a"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"แต่ถ้าใช้ Numpy"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"958"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# numpy.ndarray.sum: Return the sum of the array elements over the given axis.\n",
"sum_a = a.sum()\n",
"sum_a"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"หาค่าเฉลี่ย (Mean) จาก ผลรวมทั้งหมด/จำนวน"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"9.58"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Cal by manual\n",
"mean_a = sum_a/a.shape[0]\n",
"mean_a"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"แต่ถ้าใช้ Numpy"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"9.58"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Get the mean of numpy array\n",
"\n",
"mean_a = a.mean()\n",
"mean_a"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ค่าเบี่ยงเบนมาตรฐาน (Standard deviation)"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"56.78735422609509"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Get the standard deviation of numpy array\n",
"\n",
"std_a=a.std()\n",
"std_a"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ค่าความแปรปรวน (Variance)"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3224.8035999999997"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Get the smallest value in the numpy array\n",
"\n",
"var_a = a.var()\n",
"var_a"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"นอกจากการเรียกใช้เมธอดแล้ว เรายังสามารถเรียกใช้งานในรูปแบบฟังก์ชันก็ได้ (ใช้ชื่อฟังก์ชั่นเหมือนกับชื่อเมธอด) เช่น\n"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3224.8035999999997"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.var(a)"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0., 1., 2., 3., 4., 3.])"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.floor(b)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ตัวดำเนินการสำหรับ Numpy Array\n",
"\n",
"เมื่อใช้ตัวดำเนินการทางคณิตศาสต์กับอาร์เรย์แล้ว จะได้ ndarray ชุดใหม่เสมอ"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### การบวกลบอาร์เรย์"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"พิจารณา Numpy Array u\n"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([2, 1])"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u = np.array([2, 1])\n",
"u"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"พิจารณา Numpy Array v\n"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 2])"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v = np.array([1, 2])\n",
"v"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"เราสามารถบวกอาร์เรย์ทั้งสองนี้แล้วกำหนดให้เป็นอาร์เรย์ z"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([3, 3])"
]
},
"execution_count": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Numpy Array Addition\n",
"# To add two or more arrays use np.add(a,b) or the + sign.\n",
"\n",
"#z = np.add(u, v)\n",
"z = u + v\n",
"z"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"การดำเนินข้างต้นเทียบเท่ากับการบวกเวกเตอร์"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"y\n"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 2])"
]
},
"execution_count": 74,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Create a numpy array\n",
"\n",
"y = np.array([1, 2])\n",
"y"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"เราสามารถคูณสมาชิกทุกตัวในอาร์เรย์ด้วย 2 ได้เลยโดยที่ไม่ต้องใช้คำสั่งลูป\n"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([2, 4])"
]
},
"execution_count": 75,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Numpy Array Multiplication\n",
"# To multiply array by scalar use np.multiply(a,b)or the * sign.\n",
"\n",
"#z = np.multiply(2, y)\n",
"z = 2 * y\n",
"\n",
"z"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"การดำเนินข้างต้นเทียบเท่ากับการคูณเวกเตอร์ด้วยสเกลาร์\n"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"u\n"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 2])"
]
},
"execution_count": 77,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Create a numpy array\n",
"\n",
"u = np.array([1, 2])\n",
"u"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"พิจารณา Numpy Array v\n"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([3, 2])"
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Create a numpy array\n",
"\n",
"v = np.array([3, 2])\n",
"v"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"การคูณอาร์เรย์สองอาร์เรย์ u และ v จะได้\n"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([3, 4])"
]
},
"execution_count": 79,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Calculate the production of two numpy arrays\n",
"# To multiply two arrays use np.multiply(a,b)or the * sign.\n",
"\n",
"#z = np.multiply(u, v)\n",
"z = u * v\n",
"z"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ซึ่งเป็นการคูณแต่ละสมาชิกที่อยู่ในตำแหน่งเดียวกันเป็นคู่ๆ (element-by-element) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"นอกจากการคูณแล้ว การหาร การยกกำลัง และหารเอาเศษ ก็เป็นการคำนวณเป็นคู่ๆ ทีละตัว ดังตัวอย่างต่อไปนี้"
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0.33333333 1. ] \n",
"\n",
"[1 4] \n",
"\n",
"[1 0] \n",
"\n"
]
}
],
"source": [
"# To divide two arrays usenp.divide(a,b)or the / sign.\n",
"print(u/v, '\\n')\n",
"\n",
"print(u**v, '\\n')\n",
"print(u%v, '\\n')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### การคูณแบบ Dot Product"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ถ้าต้องการคูณสองอาร์เรย์แบบ Dot Product ระหว่าง u และ v ใช้ฟังก์ชั่น dot() หรือใช้โอเปอร์เรเตอร์ @\n"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"7"
]
},
"execution_count": 81,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Calculate the dot product\n",
"u = np.array([1, 2])\n",
"v = np.array([3, 2])\n",
"\n",
"np.dot(u, v)"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"7"
]
},
"execution_count": 82,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u@v"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### การบวกและลบอาร์เรย์ด้วยค่าคงที่\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"พิจารณา Numpy Array ต่อไปนี้"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1, 2, 3, -1])"
]
},
"execution_count": 83,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Create a constant to numpy array\n",
"\n",
"u = np.array([1, 2, 3, -1]) \n",
"u"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"บวกค่าคงที่ 1 ให้กับแต่ละสมาชิกที่อยู่ในอาร์เรย์"
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([2, 3, 4, 0])"
]
},
"execution_count": 84,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Add the constant to array\n",
"\n",
"u + 1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"สิ่งที่เกิดขึ้นสรุปเป็นรูปภาพได้ดังรูปต่อไปนี้\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ฟังก์ชั่นทางคณิตศาสตร์"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ค่าของ $\\pi$ (Pi) ใน Numpy\n"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3.141592653589793"
]
},
"execution_count": 85,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# The value of pi\n",
"\n",
"np.pi"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"เราสามารถสร้างอาร์เรย์ในหน่วยเรเดียน\n"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0. , 1.57079633, 3.14159265])"
]
},
"execution_count": 86,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Create the numpy array in radians\n",
"\n",
"x = np.array([0, np.pi/2 , np.pi])\n",
"x"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"เราสามารถใช้ฟังก์ชัน sin กับอาร์เรย์ x และให้ผลลัพท์เป็นอาร์เรย์ y ซึ่งเป็นการหาค่าไซน์ของสมาชิกทุกตัวในอาร์เรย์ x \n"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0.0000000e+00, 1.0000000e+00, 1.2246468e-16])"
]
},
"execution_count": 87,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Calculate the sin of each elements\n",
"\n",
"y = np.sin(x)\n",
"y"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0.0000000e+00, 1.0000000e+00, 1.2246468e-16])"
]
},
"execution_count": 88,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# ใช้ฟังก์ชั่น np.radians()\n",
"x = np.array([0, np.radians(90) , np.radians(180)])\n",
"y = np.sin(x)\n",
"y\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"จากผลข้างต้น เราจพพบว่า sin(𝜋) ≠ 0 เนื่องจากไม่มีตัวเลขทศนิยมที่จะมาแทนค่า 𝜋 จริงๆ ได้\n",
"แก้ด้วยการประมาณค่าโดยใช้ฟังก์ชัน np.around()"
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0., 1., 0.])"
]
},
"execution_count": 89,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.around(y, decimals=5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ค่าคงที่ที่สำคัญอื่นๆ ใน numpy\n",
"\n",
"```python\n",
"np.e\n",
"np.pi\n",
"np.nan\n",
"np.inf\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"นอกจากการคำนวณพื้นฐานแล้ว numpy ยังมีฟังก์ชันสำหรับคำนวณที่ใกล้เคียงกับในไลบรารี `math` เช่น `abs, sqrt, log, log10, exp, sin, cos, tan, arcsin, arccos, arctan, sinh, cosh, tanh, arcsinh, arccosh, arctanh`"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0. , 1.25331414, 1.77245385])"
]
},
"execution_count": 90,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"z = np.sqrt(x)\n",
"z"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## ฟังก์ชัน numpy.linspace (start, stop, n) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ฟังก์ชั่นที่ใช้สร้างอาร์เรย์ใน NumPy อีกฟังก์ชั่น คือ ฟังก์ชั่น `numpy.linspace()` ฟังก์ชั่นนี้คล้ายกับฟังก์ชั่น numpy.arange( ) แต่จะแทนที่จะระบุ step (ระยะห่างของข้อมูลแต่ละตัว) ฟังก์ชั่น `numpy.linspace()` จะระบุเป็นจำนวนของข้อมูลที่ต้องการ โดยระยะห่างของข้อมูลแต่ละตัวจะถูกปรับให้มีขนาดเท่าๆ กันโดยอัตโนมัติ มักใช้กำหนดข้อมูลในการพล็อตกราฟ\n",
"\n",
"\n",
"**Syntax**\n",
"```\n",
"numpy.linspace(start, stop, num)\n",
"```\n",
"\n",
"**ความหมายของแต่ละพารามิเตอร์:**\n",
"\n",
"start:\tค่าเริ่มต้นของอาร์เรย์\n",
"stop:\tค่าสุดท้ายของอาร์เรย์\n",
"num:\tจำนวนข้อมูลในอาร์เรย์ (default argument = 50)\n"
]
},
{
"cell_type": "code",
"execution_count": 91,
"metadata": {},
"outputs": [],
"source": [
"np.linspace?"
]
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([-2., -1., 0., 1., 2.])"
]
},
"execution_count": 92,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Makeup a numpy array within [-2, 2] and 5 elements\n",
"\n",
"np.linspace(-2, 2, num=5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"จาก -2 ถึง 2 แต่ต้องการ 9 จำนวน num=9\n"
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([-2. , -1.5, -1. , -0.5, 0. , 0.5, 1. , 1.5, 2. ])"
]
},
"execution_count": 93,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Make a numpy array within [-2, 2] and 9 elements\n",
"\n",
"np.linspace(-2, 2, num=9)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"เราสามารถใช้ฟังก์ชั่น linspace() สร้างตัวเลข 100 จำนวนที่อยู่ในช่วงตั้งแต่ 0 ถึง $3\\pi$\n"
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0. , 0.09519978, 0.19039955, 0.28559933, 0.38079911,\n",
" 0.47599889, 0.57119866, 0.66639844, 0.76159822, 0.856798 ,\n",
" 0.95199777, 1.04719755, 1.14239733, 1.23759711, 1.33279688,\n",
" 1.42799666, 1.52319644, 1.61839622, 1.71359599, 1.80879577,\n",
" 1.90399555, 1.99919533, 2.0943951 , 2.18959488, 2.28479466,\n",
" 2.37999443, 2.47519421, 2.57039399, 2.66559377, 2.76079354,\n",
" 2.85599332, 2.9511931 , 3.04639288, 3.14159265, 3.23679243,\n",
" 3.33199221, 3.42719199, 3.52239176, 3.61759154, 3.71279132,\n",
" 3.8079911 , 3.90319087, 3.99839065, 4.09359043, 4.1887902 ,\n",
" 4.28398998, 4.37918976, 4.47438954, 4.56958931, 4.66478909,\n",
" 4.75998887, 4.85518865, 4.95038842, 5.0455882 , 5.14078798,\n",
" 5.23598776, 5.33118753, 5.42638731, 5.52158709, 5.61678687,\n",
" 5.71198664, 5.80718642, 5.9023862 , 5.99758598, 6.09278575,\n",
" 6.18798553, 6.28318531, 6.37838508, 6.47358486, 6.56878464,\n",
" 6.66398442, 6.75918419, 6.85438397, 6.94958375, 7.04478353,\n",
" 7.1399833 , 7.23518308, 7.33038286, 7.42558264, 7.52078241,\n",
" 7.61598219, 7.71118197, 7.80638175, 7.90158152, 7.9967813 ,\n",
" 8.09198108, 8.18718085, 8.28238063, 8.37758041, 8.47278019,\n",
" 8.56797996, 8.66317974, 8.75837952, 8.8535793 , 8.94877907,\n",
" 9.04397885, 9.13917863, 9.23437841, 9.32957818, 9.42477796])"
]
},
"execution_count": 94,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Make a numpy array within [0, 3π] and 100 elements \n",
"\n",
"x = np.linspace(0, 3*np.pi, num=100)\n",
"x"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"เราสมารถใช้ฟังก์ชั่น sin() หาค่า sine ของแต่ละสมาชิกในอาร์เรย์ x แล้วกำหนดค่าที่ได้เป็นอาร์เรย์ y\n"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {},
"outputs": [],
"source": [
"# Calculate the sine of x list\n",
"\n",
"y = np.sin(x)"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[deg2rad() หรือ radians() ใช้สำหรับเปลี่ยนจากองศาเป็นเรเดียน และ rad2deg() หรือ degrees() สำหรับเปลี่ยนจากเรเดียนเป็นองศา"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plotvec1"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"u = np.array([2, 0])\n",
"v = np.array([0, 2])\n",
"# Write your code below and press Shift+Enter to execute\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\\[1, 2, 3, 4, 5] และ \\[5, 4, 3, 2, 1] จงก๊อปปี๊ลิสต์ทั้งสองให้เป็นชนิด Numpy array จากนั้นนำไปคูณกัน\n"
]
},
{
"cell_type": "code",
"execution_count": 106,
"metadata": {},
"outputs": [],
"source": [
"# Write your code below and press Shift+Enter to execute\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\\[-2, 2] และ \\[1, 1] ให้เป็น Numpy arrays a และ b จากนั้น พล็อตอาร์เรย์ให้เป็นเวกเตอร์โดยใช้ฟังก์ชั่น Plotvec2 และหาผลลัพธ์ของการคูณแบบ dot product"
]
},
{
"cell_type": "code",
"execution_count": 107,
"metadata": {},
"outputs": [],
"source": [
"# Write your code below and press Shift+Enter to execute\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\\[2, 0] และ \\[0, 3] ให้เป็น Numpy arrays a และ b จากนั้น พล็อตอาร์เรย์ให้เป็นเวกเตอร์โดยใช้ฟังก์ชั่น Plotvec2 และหาหาผลลัพธ์ dot product\n"
]
},
{
"cell_type": "code",
"execution_count": 108,
"metadata": {},
"outputs": [],
"source": [
"# Write your code below and press Shift+Enter to execute\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\\[2, 2] และ \\[0, 2] ให้เป็น Numpy arrays a และ b จากนั้น พล็อตอาร์เรย์ให้เป็นเวกเตอร์โดยใช้ฟังก์ชั่น Plotvec2 และหาผลลัพธ์ dot product\n"
]
},
{
"cell_type": "code",
"execution_count": 109,
"metadata": {},
"outputs": [],
"source": [
"# Write your code below and press Shift+Enter to execute\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\\[-2, 2] กับ \\[1, 1] (ข้อ 4) และ dot product ของ \\[2, 0] กับ \\[0, 3] (ข้อ 5) จึงเป็นศูนย์ ในขณะที่ dot product ของ \\[2, 2] กับ \\[0, 2] (ข้อ 6) ได้ผลลัพธ์ไม่เป็นศูนย์? "
]
},
{
"cell_type": "code",
"execution_count": 110,
"metadata": {},
"outputs": [],
"source": [
"# Write your answer below and press Shift+Enter to execute\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"