Skip to content

Instantly share code, notes, and snippets.

@ischurov
Created October 6, 2018 08:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ischurov/768f9c2be6fda7785bdac9d1fc33e272 to your computer and use it in GitHub Desktop.
Save ischurov/768f9c2be6fda7785bdac9d1fc33e272 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"my_list = [1, 5, 10]"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"el = my_list.pop()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"10"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"el"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 5]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"my_list"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"my_list = [4]"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[]"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"my_list[0:-1]"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"table = [[1, 2, 3],\n",
" [5, 10, 15]]"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"# задача: написать функцию column(table, i), возвращающую\n",
"# i'ый столбец таблицы table"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 3]"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"table[0]"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"15"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"table[1][2]"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[5, 10, 15]"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"table[-1]"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"def column(table, i):\n",
" return [row[i] for row in table]"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"assert column([[1, 2, 3], [5, 10, 15]], 1) == [2, 10]"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"import os"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'C:\\\\Users\\\\student'"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"os.getcwd()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hello, world!\n",
"This is a test.\n"
]
}
],
"source": [
"f = open(\"c:\\\\users\\\\student\\\\test.txt\")\n",
"for line in f:\n",
" print(line.rstrip())\n",
"f.close()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hello, world!\n",
"This is a test.\n",
"Once more\n"
]
}
],
"source": [
"f = open(\"c:\\\\users\\\\student\\\\test.txt\")\n",
"for line in f:\n",
" print(line.rstrip())\n",
"print(\"Once more\")\n",
"for line in f:\n",
" print(line.rstrip())\n",
"f.close()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hello, world!\n",
"This is a test.\n",
"Once more\n",
"Hello, world!\n",
"This is a test.\n"
]
}
],
"source": [
"f = open(\"c:\\\\users\\\\student\\\\test.txt\")\n",
"for line in f:\n",
" print(line.rstrip())\n",
"f.seek(0)\n",
"print(\"Once more\")\n",
"for line in f:\n",
" print(line.rstrip())\n",
"f.close()"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'C:\\\\Users\\\\student'"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"os.getcwd()"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"f = open(\"test.txt\")\n",
"lines = f.readlines()\n",
"f.close()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['Hello, world!\\n', 'This is a test.\\n']"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lines"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hello, world!\n",
"\n",
"---\n"
]
}
],
"source": [
"print(lines[0])\n",
"print(\"---\")"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"f = open(\"test.txt\")\n",
"text = f.read()\n",
"f.close()"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Hello, world!\\nThis is a test.\\n'"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"text"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"f = open(\"new.txt\", \"w\")\n",
"print(\"Hello! This is new file.\", file=f)\n",
"f.close()"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"False\n",
"True\n"
]
}
],
"source": [
"with open(\"new.txt\", \"w\") as f:\n",
" print(\"Hello! This is new file.\", file=f)\n",
" print(f.closed)\n",
"print(f.closed)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"with open(\"new.txt\", \"a\") as ghfgf:\n",
" print(\"New line here\", file=ghfgf)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['Hello! This is new file.\\n', 'New line here\\n']\n",
"['Hello, world!\\n', 'This is a test.\\n']\n"
]
}
],
"source": [
"with open(\"new.txt\") as nf, open(\"test.txt\") as tf:\n",
" print(nf.readlines())\n",
" print(tf.readlines())"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [],
"source": [
"numbers = [1, 2, 5.5, 17.5] * 1000000"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4000000"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(numbers)"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [],
"source": [
"# создать список squares, состоящий из квадратов чисел в numbers\n",
"squares = [x ** 2 for x in numbers]"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 4, 30.25, 306.25, 1]"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"squares[:5]"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [],
"source": [
"arr = np.array([3, 18, 4])"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"18"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"arr[1]"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [],
"source": [
"arr[0] = 12"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([12, 18, 4])"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"arr"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"12\n",
"18\n",
"4\n"
]
}
],
"source": [
"for element in arr:\n",
" print(element)"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [],
"source": [
"u = np.array([1, 2, 3])\n",
"v = np.array([5, 10, 15])"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 6, 12, 18])"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u + v"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 5, 20, 45])"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u * v"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"70"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u @ v"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [],
"source": [
"mixed_array = np.array([1, 5, \"hello\"])"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['1', '5', 'hello'], dtype='<U11')"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mixed_array"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [],
"source": [
"mixed_array[0] = 'this is a test. this is just a test'"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['this is a t', '5', 'hello'], dtype='<U11')"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mixed_array"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([12, 18, 4])"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"arr"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([22, 28, 14])"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"arr + 10"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 2, 2, 3])"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.concatenate([np.array([1, 2]), np.array([2, 3])])"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [],
"source": [
"numbers = [1, 2, 5.5, 17.5] * 1000000"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2.09 s ± 6.08 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n"
]
}
],
"source": [
"%%timeit\n",
"# создать список squares, состоящий из квадратов чисел в numbers\n",
"squares = [x ** 2 for x in numbers]"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [],
"source": [
"arr_numbers = np.array(numbers)"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"21.5 ms ± 209 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n"
]
}
],
"source": [
"%%timeit\n",
"\n",
"arr_squares = arr_numbers ** 2"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [],
"source": [
"arr = np.array([0, 10, 20, 30])"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [],
"source": [
"some_slice = arr[1:3]"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([10, 20])"
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_slice"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [],
"source": [
"some_slice[0] = 100"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([100, 20])"
]
},
"execution_count": 75,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_slice"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0, 100, 20, 30])"
]
},
"execution_count": 76,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"arr"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0, 100, 20, 30])"
]
},
"execution_count": 77,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_slice.base"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0, 100, 20, 30])"
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"arr"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0, 100, 20, 30])"
]
},
"execution_count": 79,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"some_slice.base"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {},
"outputs": [],
"source": [
"arr = np.array([-5, 7, -3, 3, 12, -5])"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 7, 3, 12])"
]
},
"execution_count": 81,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"arr[arr > 0]"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([False, True, False, True, True, False])"
]
},
"execution_count": 82,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"arr > 0"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 7, -3, 12, -5])"
]
},
"execution_count": 83,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"arr[np.array([False, True, True, False, True, True])]"
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([12])"
]
},
"execution_count": 84,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"arr[(arr > 0) & (arr % 2 == 0)]"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([False, True, False, True, True, False])"
]
},
"execution_count": 85,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(arr > 0)"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([False, False, False, False, True, False])"
]
},
"execution_count": 86,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(arr % 2 == 0)"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([False, True, False, True, True, False])"
]
},
"execution_count": 90,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(arr > 0) | (arr % 2 == 0)"
]
},
{
"cell_type": "code",
"execution_count": 91,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([-5, -3, -5])"
]
},
"execution_count": 91,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"arr[~(arr > 0)]"
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {},
"outputs": [],
"source": [
"arr[arr < 0] = 0"
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0, 7, 0, 3, 12, 0])"
]
},
"execution_count": 94,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"arr"
]
},
{
"cell_type": "code",
"execution_count": 110,
"metadata": {},
"outputs": [],
"source": [
"x = np.array([1, 2, 3, 4])\n",
"y = np.array([2, 5, 5, -7])"
]
},
{
"cell_type": "code",
"execution_count": 111,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([2, 3])"
]
},
"execution_count": 111,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x[y > 2]"
]
},
{
"cell_type": "code",
"execution_count": 112,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([False, True, True, False])"
]
},
"execution_count": 112,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y > 2"
]
},
{
"cell_type": "code",
"execution_count": 113,
"metadata": {},
"outputs": [],
"source": [
"M = np.array([[1, 2, 3],\n",
" [4, 5, 10]])"
]
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(2, 3)"
]
},
"execution_count": 115,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"M.shape"
]
},
{
"cell_type": "code",
"execution_count": 116,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 1, 2, 3],\n",
" [ 4, 5, 10]])"
]
},
"execution_count": 116,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"M"
]
},
{
"cell_type": "code",
"execution_count": 117,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 2, 3])"
]
},
"execution_count": 117,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"M[0]"
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([2, 3])"
]
},
"execution_count": 121,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"M[0, 1:]"
]
},
{
"cell_type": "code",
"execution_count": 127,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([2, 5])"
]
},
"execution_count": 127,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\n",
"M[:, 1]"
]
},
{
"cell_type": "code",
"execution_count": 128,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 1, 2, 3],\n",
" [ 4, 5, 10]])"
]
},
"execution_count": 128,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"M"
]
},
{
"cell_type": "code",
"execution_count": 130,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"25"
]
},
"execution_count": 130,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"M.sum()"
]
},
{
"cell_type": "code",
"execution_count": 129,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 5, 7, 13])"
]
},
"execution_count": 129,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"M.sum(axis=0)"
]
},
{
"cell_type": "code",
"execution_count": 131,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 6, 19])"
]
},
"execution_count": 131,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"M.sum(axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 135,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3.5"
]
},
"execution_count": 135,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"M.mean(axis=0)[1]"
]
},
{
"cell_type": "code",
"execution_count": 136,
"metadata": {},
"outputs": [],
"source": [
"table = [[1, 2, 3], [5, 6, 7]]"
]
},
{
"cell_type": "code",
"execution_count": 137,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 3]"
]
},
"execution_count": 137,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"table[0]"
]
},
{
"cell_type": "code",
"execution_count": 138,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 1, 2, 3],\n",
" [ 4, 5, 10]])"
]
},
"execution_count": 138,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"M"
]
},
{
"cell_type": "code",
"execution_count": 139,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 2, 4, 6],\n",
" [ 8, 10, 20]])"
]
},
"execution_count": 139,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"M * 2"
]
},
{
"cell_type": "code",
"execution_count": 140,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 6, 7, 8],\n",
" [ 9, 10, 15]])"
]
},
"execution_count": 140,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"M + 5"
]
},
{
"cell_type": "code",
"execution_count": 141,
"metadata": {},
"outputs": [],
"source": [
"W = np.array([[3, 7, 9], [8, 9, 15]])"
]
},
{
"cell_type": "code",
"execution_count": 142,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 4, 9, 12],\n",
" [12, 14, 25]])"
]
},
"execution_count": 142,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"M + W"
]
},
{
"cell_type": "code",
"execution_count": 143,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 1, 4],\n",
" [ 2, 5],\n",
" [ 3, 10]])"
]
},
"execution_count": 143,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"M.T"
]
},
{
"cell_type": "code",
"execution_count": 144,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 3, 14, 27],\n",
" [ 32, 45, 150]])"
]
},
"execution_count": 144,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"M * W"
]
},
{
"cell_type": "code",
"execution_count": 146,
"metadata": {},
"outputs": [],
"source": [
"I = np.array([[1, 0], [0, 2]])"
]
},
{
"cell_type": "code",
"execution_count": 148,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 1, 2, 3],\n",
" [ 4, 5, 10]])"
]
},
"execution_count": 148,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"M"
]
},
{
"cell_type": "code",
"execution_count": 147,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 1, 2, 3],\n",
" [ 8, 10, 20]])"
]
},
"execution_count": 147,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"I @ M"
]
},
{
"cell_type": "code",
"execution_count": 150,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1. , 0. ],\n",
" [0. , 0.5]])"
]
},
"execution_count": 150,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.linalg.inv(I)"
]
},
{
"cell_type": "code",
"execution_count": 151,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 1, 2, 3],\n",
" [ 4, 5, 10]])"
]
},
"execution_count": 151,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"M"
]
},
{
"cell_type": "code",
"execution_count": 152,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 2, 4, 6],\n",
" [ 5, 7, 13]])"
]
},
"execution_count": 152,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"M + np.array([1, 2, 3])"
]
},
{
"cell_type": "code",
"execution_count": 153,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(2, 3)"
]
},
"execution_count": 153,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"M.shape"
]
},
{
"cell_type": "code",
"execution_count": 154,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(3,)"
]
},
"execution_count": 154,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.array([1, 2, 3]).shape"
]
},
{
"cell_type": "code",
"execution_count": 156,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 3, 4, 5],\n",
" [11, 12, 17]])"
]
},
"execution_count": 156,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"M + np.array([[2], [7]])"
]
},
{
"cell_type": "code",
"execution_count": 157,
"metadata": {},
"outputs": [],
"source": [
"q = np.array([1, 2, 3, 4, 5, 6])"
]
},
{
"cell_type": "code",
"execution_count": 159,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1, 2, 3],\n",
" [4, 5, 6]])"
]
},
"execution_count": 159,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"q.reshape((2, 3))"
]
},
{
"cell_type": "code",
"execution_count": 160,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1, 2],\n",
" [3, 4],\n",
" [5, 6]])"
]
},
"execution_count": 160,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"q.reshape((3, 2))"
]
},
{
"cell_type": "code",
"execution_count": 161,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1, 2],\n",
" [3, 4],\n",
" [5, 6]])"
]
},
"execution_count": 161,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"q.reshape((3, -1))"
]
},
{
"cell_type": "code",
"execution_count": 162,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 2, 3, 4, 5, 6])"
]
},
"execution_count": 162,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"q"
]
},
{
"cell_type": "code",
"execution_count": 165,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1, 2, 3, 4, 5, 6]])"
]
},
"execution_count": 165,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"q.reshape((1, -1))"
]
},
{
"cell_type": "code",
"execution_count": 167,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1],\n",
" [2],\n",
" [3],\n",
" [4],\n",
" [5],\n",
" [6]])"
]
},
"execution_count": 167,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"q.reshape((-1, 1))"
]
},
{
"cell_type": "code",
"execution_count": 168,
"metadata": {},
"outputs": [],
"source": [
"A = np.array([[2, 3], [1, 4]])"
]
},
{
"cell_type": "code",
"execution_count": 169,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([1., 5.]), array([[-0.9486833 , -0.70710678],\n",
" [ 0.31622777, -0.70710678]]))"
]
},
"execution_count": 169,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.linalg.eig(A)"
]
},
{
"cell_type": "code",
"execution_count": 170,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 175,
"metadata": {},
"outputs": [],
"source": [
"x = np.linspace(-5, 5, 21)"
]
},
{
"cell_type": "code",
"execution_count": 176,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([-5. , -4.5, -4. , -3.5, -3. , -2.5, -2. , -1.5, -1. , -0.5, 0. ,\n",
" 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5, 5. ])"
]
},
"execution_count": 176,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x"
]
},
{
"cell_type": "code",
"execution_count": 197,
"metadata": {},
"outputs": [],
"source": [
"x = np.linspace(-5, 5, 201)"
]
},
{
"cell_type": "code",
"execution_count": 202,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0xdf3f908>"
]
},
"execution_count": 202,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0xdf19b70>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(x, np.sin(x), '-.', label='$y=\\\\sin\\\\ x$')\n",
"plt.plot(x, np.cos(x ** 2), label=\"$y=\\\\cos x^2$\")\n",
"plt.legend(loc=4)"
]
},
{
"cell_type": "code",
"execution_count": 187,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x9ca28d0>]"
]
},
"execution_count": 187,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x9c1f390>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot([0, 1, 3], [2, 5, -1], '.')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment