Files
DTU-Noter/10060 - Physics/Kinematics 1D/Numpy notebook.ipynb

558 lines
105 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Numpy\n",
"\n",
"Numpy is one of the packages most used when we work with data.\n",
"The most basic element is the numpy arrays, that are arrays (or vectors), that in our use, will almost exclusively contain real numbers (floats).\n",
"The numpy arrays can hold many different types of element but in an array all elements must be of the same type.\n",
"The numpy package contains many methods that are efficient for calculation on arrays.\n",
"\n",
"To use *numpy* we use \n",
"```python\n",
"import numpy as np\n",
"```\n",
"We access *numpy*s methods by writing e.g. *np.sqrt(0.87)* which computes the square root of the argument. \n",
"The power of *numpy* lies in the fact that it can compute for example the square root of many numbers in one call, and it does so very efficiently.\n",
"```python\n",
"x = np.array([1.2,3.4,2.7])\n",
"print(x)\n",
"y = np.sqrt(x)\n",
"print(y)\n",
"```\n",
"\n",
"Note that we use plot commands in this notebook, we will return to plotting graphs later on."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1.2 3.4 2.7]\n",
"[1.09544512 1.84390889 1.64316767]\n"
]
}
],
"source": [
"import numpy as np\n",
"x = np.array([1.2,3.4,2.7])\n",
"print(x)\n",
"y = np.sqrt(x)\n",
"print(y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can also use the regular expressions such as addition (+), subtraction (-), multiplication(*), division (/), and powers (**)."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1.2 3.4 2.7 3.7 1.9 2.9 4.5]\n",
"[ 1.44 11.56 7.29 13.69 3.61 8.41 20.25]\n"
]
}
],
"source": [
"import numpy as np\n",
"x = np.array([1.2,3.4,2.7,3.7,1.9,2.9,4.5])\n",
"print(x)\n",
"y = x**2\n",
"print(y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We often have the need to generate equidistant values in an interval, e.g. the timepoints at which we would like to compute a solution.\n",
"The linspace method generates equidistant numbers in an interval spanned by the first two arguments, the third argument is the number of points to generate.\n",
"```python\n",
"t = np.linspace(0.0,10.0,11)\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"t = np.linspace(0.0,10.0,11)\n",
"print(t)\n",
"x = np.sin(t)\n",
"import matplotlib.pyplot as plt\n",
"plt.figure()\n",
"plt.plot(t,x,'k-')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is not a particularly good representation of a sine function so here we would generate (many) more points with *linspace*.\n",
"\n",
"Note that many standard functions are defined on numpy array:\n",
"sin, cos, tan, asin/arcsin, acos/arccos, atan/arctan, log, log10, exp and many more."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. 1.1 1.2 1.3\n",
" 1.4 1.5 1.6 1.7 1.8 1.9 2. 2.1 2.2 2.3 2.4 2.5 2.6 2.7\n",
" 2.8 2.9 3. 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4. 4.1\n",
" 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5. 5.1 5.2 5.3 5.4 5.5\n",
" 5.6 5.7 5.8 5.9 6. 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9\n",
" 7. 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8. 8.1 8.2 8.3\n",
" 8.4 8.5 8.6 8.7 8.8 8.9 9. 9.1 9.2 9.3 9.4 9.5 9.6 9.7\n",
" 9.8 9.9 10. ]\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"t = np.linspace(0.0,10.0,101)\n",
"print(t) \n",
"x = np.sin(t)\n",
"import matplotlib.pyplot as plt\n",
"plt.figure()\n",
"plt.plot(t,x,'k-')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Indexing of numpy arrays\n",
"To obtain a particular element in an array we use the indexing with *[]* (just like for lists and tupples).\n",
"```python\n",
"x = np.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0])\n",
"x[3]\n",
"```\n",
"Indexing always starts at zero, so *x[0]* is the first element of the array and *x[5]* is the last elementer det sidste element. \n",
"It also possible to get the last element from an array by using *x[-1]* which is useful if you don't know how many element an array has (and you forgotten how to determine the number of elements).\n",
"\n",
"It is also possible to get a subarray, for instance we can get the first three elements with *[0:3]*, *0* is the first element and *3* is the first element that should not be returned.\n",
"It may not be intuitive byt the first index is inclusive and the last index is exclusive.\n",
"Here is a few examples of taking out elements and then subarrays."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"t\n",
"[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]\n",
"t[0]\n",
"0.0\n",
"t[1]\n",
"1.0\n",
"t[10]\n",
"10.0\n",
"t[-1]\n",
"10.0\n",
"t[-2]\n",
"9.0\n"
]
}
],
"source": [
"t = np.linspace(0.0,10.0,11)\n",
"print('t')\n",
"print(t)\n",
"print('t[0]')\n",
"print(t[0])\n",
"print('t[1]')\n",
"print(t[1])\n",
"print('t[10]')\n",
"print(t[10])\n",
"print('t[-1]')\n",
"print(t[-1])\n",
"print('t[-2]')\n",
"print(t[-2])"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"t\n",
"[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]\n",
"t[0:3]\n",
"[0. 1. 2.]\n",
"t[0:-1]\n",
"[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]\n",
"t[0:]\n",
"[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]\n",
"t[1:]\n",
"[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]\n",
"t[:]\n",
"[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]\n"
]
}
],
"source": [
"print('t')\n",
"print(t)\n",
"print('t[0:3]')\n",
"print(t[0:3])\n",
"print('t[0:-1]')\n",
"print(t[0:-1])\n",
"print('t[0:]')\n",
"print(t[0:])\n",
"print('t[1:]')\n",
"print(t[1:])\n",
"print('t[:]')\n",
"print(t[:])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Other useful methods\n",
"\n",
"There are a number of useful methods some of which are mentioned here. \n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"x = [ 1. 2. 5. -2. 6. 3.]\n",
"x = [ 1. 2. 5. -2. 6. 3.]\n",
"[ 1. 2. 5. -2. 6. 3. 8.]\n",
"x = [ 1. 2. 5. -2. 6. 3. 8.]\n",
"max = 8.0\n",
"min = -2.0\n",
"[-2. 1. 2. 3. 5. 6. 8.]\n",
"x = [ 1. 2. 5. -2. 6. 3. 8.]\n"
]
}
],
"source": [
"import numpy as np\n",
"x = np.array([1.0,2.0,5.0,-2.0,6.0,3.0])\n",
"print('x = ',x)\n",
"# note that appending an array does not change the array, rather it returns a new array\n",
"np.append(x,8.0)\n",
"print('x = ',x)\n",
"print(np.append(x,8.0))\n",
"x = np.append(x,8.0)\n",
"print('x = ',x)\n",
"print('max = ',np.max(x))\n",
"print('min = ',np.min(x))\n",
"# note that sorting an array changes the array\n",
"print(np.sort(x))\n",
"print('x = ',x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Linear algebra\n",
"There are useful linear algebra methods in the packages *numpy* and *numpy.linalg*.\n"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A = [[1. 2.]\n",
" [2. 3.]]\n",
"B = [[2. 1.]\n",
" [3. 7.]]\n",
"C = [[ 8. 15.]\n",
" [13. 23.]]\n",
"b = [1. 2.]\n",
"A * b = [5. 8.]\n",
"x = [1. 0.]\n",
"A*x = [1. 2.]\n",
"EigResult(eigenvalues=array([-0.23606798, 4.23606798]), eigenvectors=array([[-0.85065081, -0.52573111],\n",
" [ 0.52573111, -0.85065081]]))\n",
"[-0.23606798 4.23606798]\n",
"[[-0.85065081 -0.52573111]\n",
" [ 0.52573111 -0.85065081]]\n"
]
}
],
"source": [
"import numpy as np\n",
"A = np.array([[1.0,2.0],[2.0,3.0]])\n",
"print('A = ',A)\n",
"B = np.array([[2.0,1.0],[3.0,7.0]])\n",
"print('B = ',B)\n",
"C = np.matmul(A,B)\n",
"print('C = ',C)\n",
"b = np.array([1.0,2.0])\n",
"print('b = ',b)\n",
"print('A * b = ',np.matmul(A,b))\n",
"x = np.linalg.solve(A,b)\n",
"print('x = ',x)\n",
"print('A*x = ',np.matmul(A,x))\n",
"lamda = np.linalg.eig(A)\n",
"print(lamda)\n",
"print(lamda.eigenvalues)\n",
"print(lamda.eigenvectors)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Random numbers\n",
"Sometimes we need to generate random numbers. The package *numpy.random* contains many methods for that.\n",
"Below we first get a random number generator, and if you use the same argument (a large integer) it will generate the same sequence of random numbers every time.\n",
"\n",
"Then we get ten uniformly distributed number in the interval $[0,1]$, and then\n",
"ten normally distributes numbers with mean 0 and standard deviation 1.\n",
"Finally we repeat with a million random numbers and show histograms."
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0.35447482 0.52593758 0.62240136 0.02371226 0.82466256 0.79286509\n",
" 0.2852207 0.58789997 0.80774809 0.12792535]\n",
"[-0.7395722 -0.09639822 1.06465997 1.29773017 1.02655936 0.14327828\n",
" -0.21333615 -0.39963028 1.2672621 -0.93975573]\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAeeklEQVR4nO3df2zX9Z3A8Veh0Kq31ghai1SsO72xkbmzDYxyxNumNUjccdnFXryIerjYuB1CT3f0uOggJt2PG3FugtsEiTn0Gp1evKznbLI7rMD9oKvLIiTuBFfQIilmbdVdEfjcH4bedS3Yb2375lsej+T7x/fN5/Pt+/v+ftvPk8/3228LsizLAgAgkSmpJwAAnN3ECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJFWYegIjceLEiXjzzTfjYx/7WBQUFKSeDgAwAlmWRV9fX8yaNSumTDn1+Y+8iJE333wzKioqUk8DABiFAwcOxOzZs0/573kRIx/72Mci4oM7U1JSkng2AMBI9Pb2RkVFxcBx/FTyIkZOvjRTUlIiRgAgz3zYWyy8gRUASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkFRh6glAPrlszU+GjL3+jaUJZsJ4+t3H2WMM40uMQB7LhzhyYAc+jBiBSS4fggUYncny/S1GxshwT4jflY9PEDjpTPuhd6bNZ7KYyHVN/Rg6a3fmyDlGXnzxxfj2t78d7e3t0dXVFc8++2wsW7bstPts3749Ghoa4pVXXolZs2bF1772taivrx/tnCHv5OMPvZEENumc6c+p1KExGuM55zP98Uot5xh5991346qrrorbb789vvSlL33o9vv3748bbrghvvzlL8c//MM/xI4dO+Kuu+6KCy+8cET7M9RIDxKe7GmM5PGZyB96Z7ORrLP1yn/5GD4TKR/WJ+cYWbJkSSxZsmTE2z/yyCNx6aWXxoMPPhgREXPnzo3du3fH3//934uROLtq+Uy7r2fafPg/+fDDcyTOpufYZI26M+0xnKzrPO7vGdm1a1fU1tYOGrv++utj8+bN8f7778e0adOG7NPf3x/9/f0D13t7e8d7moNM1geb05ssB8B8NFbfc753OZXxfG6cacGSj8Y9Rg4dOhRlZWWDxsrKyuLYsWPR3d0d5eXlQ/ZpamqKdevWjffUzjqjPdiO5hvNQWF8jNdBOx9+eJ7pz6nUL88xMUb7OI/mts+m58aE/DZNQUHBoOtZlg07flJjY2M0NDQMXO/t7Y2Kiorxm+AZ7kz/IZyaH/BnjvH8QZ3SZHmOpb4fo3nsU895vOTj98F4GvcYufjii+PQoUODxg4fPhyFhYUxY8aMYfcpKiqKoqKi8Z7ahMuHJ99EznG0by48034Q5cPjyv850x+vsZzfmX5f4aRxj5GFCxfGP//zPw8ae+GFF6K6unrY94tw5pvI117PJilP0Z7N655aPrxf5kx7+eBseb6eLfczYhQx8s4778R///d/D1zfv39/vPzyy3HBBRfEpZdeGo2NjfHGG2/E448/HhER9fX18f3vfz8aGhriy1/+cuzatSs2b94cTz755NjdC4Z1Np0yn4zOlvuZr87mxycf/kNyNj8++SjnGNm9e3d87nOfG7h+8r0dt956a2zdujW6urqis7Nz4N8rKyujpaUlVq9eHQ8//HDMmjUrHnroIb/WC5OAH/j5z2PImSDnGPnjP/7jgTegDmfr1q1Dxq655pr4+c9/nuuXmhBn2jfimTYfACafM+2lN3+bhrOCyAM4c4kROA0RAzD+pqSeAABwdnNmhEnJGQ2A/CFGAGASycf/jHmZBgBISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApEYVIxs3bozKysooLi6OqqqqaGtrO+3227Zti6uuuirOPffcKC8vj9tvvz2OHDkyqgkDAJNLzjHS3Nwcq1atirVr10ZHR0csXrw4lixZEp2dncNu/9JLL8Xy5ctjxYoV8corr8RTTz0V//Vf/xV33HHHR548AJD/co6RDRs2xIoVK+KOO+6IuXPnxoMPPhgVFRWxadOmYbf/93//97jsssti5cqVUVlZGX/0R38Ud955Z+zevfsjTx4AyH85xcjRo0ejvb09amtrB43X1tbGzp07h92npqYmDh48GC0tLZFlWbz11lvx9NNPx9KlS0/5dfr7+6O3t3fQBQCYnHKKke7u7jh+/HiUlZUNGi8rK4tDhw4Nu09NTU1s27Yt6urqYvr06XHxxRfH+eefH9/73vdO+XWampqitLR04FJRUZHLNAGAPDKqN7AWFBQMup5l2ZCxk/bs2RMrV66M++67L9rb2+P555+P/fv3R319/Slvv7GxMXp6egYuBw4cGM00AYA8UJjLxjNnzoypU6cOOQty+PDhIWdLTmpqaopFixbFvffeGxERn/70p+O8886LxYsXxwMPPBDl5eVD9ikqKoqioqJcpgYA5KmczoxMnz49qqqqorW1ddB4a2tr1NTUDLvPe++9F1OmDP4yU6dOjYgPzqgAAGe3nF+maWhoiEcffTS2bNkSe/fujdWrV0dnZ+fAyy6NjY2xfPnyge1vvPHGeOaZZ2LTpk2xb9++2LFjR6xcuTLmz58fs2bNGrt7AgDkpZxepomIqKuriyNHjsT69eujq6sr5s2bFy0tLTFnzpyIiOjq6hr0mSO33XZb9PX1xfe///3467/+6zj//PPj85//fHzzm98cu3sBAOStgiwPXivp7e2N0tLS6OnpiZKSkjG97cvW/GRMbw8A8s3r3zj1x218FCM9fvvbNABAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABIalQxsnHjxqisrIzi4uKoqqqKtra2027f398fa9eujTlz5kRRUVF8/OMfjy1btoxqwgDA5FKY6w7Nzc2xatWq2LhxYyxatCh+8IMfxJIlS2LP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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"rng = np.random.default_rng(749749234367)\n",
"x = rng.uniform(low=0.0,high=1.0,size=10)\n",
"print(x)\n",
"x = rng.normal(loc=0.0,scale=1.0,size=10)\n",
"print(x)\n",
"import matplotlib.pyplot as plt\n",
"plt.figure()\n",
"x = rng.uniform(low=0.0,high=1.0,size=1000000)\n",
"plt.hist(x,bins=100,density=True)\n",
"plt.show()\n",
"x = rng.normal(loc=0.0,scale=1.0,size=1000000)\n",
"plt.hist(x,bins=100,density=True)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Optional - Sorting of data and extraction of certain data\n",
"It can sometimes be useful to extract values from an array that are not placed sequentially in the array. \n",
"You can express your criterion for selction with a logical expression.\n",
"If you wish to extract all elements larger than 2 but smaller than 5 together with elements that are larger than 7 and smaller than or equal to 9.\n",
"This can be expressed logically with the expression\n",
"```python\n",
"mask = ((2 < t) & (t < 5)) | ((7 < t) & (t <= 9))\n",
"```\n",
"Udtrykket der også er en vektor med med logiske værdier (sand eller falsk) kaldes også for en maske og\n",
"den kan bruges til at udvælge de elementer hvor udtrykket er sandt.\n",
"Indiceringen kaldes også for boolesk indicering."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[False False False True True False False False True True False]\n",
"[3. 4. 8. 9.]\n"
]
}
],
"source": [
"mask = ((2 < t) & (t < 5)) | ((7 < t) & (t <= 9))\n",
"print(mask)\n",
"print(t[mask])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let us look at a slightly more complicated data series with sine values.\n",
"We want to extract the positives values."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 0. 0.10083842 0.20064886 0.2984138 0.39313661 0.48385164\n",
" 0.56963411 0.64960951 0.72296256 0.78894546 0.84688556 0.8961922\n",
" 0.93636273 0.96698762 0.98775469 0.99845223 0.99897117 0.98930624\n",
" 0.96955595 0.93992165 0.90070545 0.85230712 0.79522006 0.73002623\n",
" 0.65739025 0.57805259 0.49282204 0.40256749 0.30820902 0.21070855\n",
" 0.11106004 0.01027934 -0.09060615 -0.19056796 -0.28858706 -0.38366419\n",
" -0.47483011 -0.56115544 -0.64176014 -0.7158225 -0.7825875 -0.84137452\n",
" -0.89158426 -0.93270486 -0.96431712 -0.98609877 -0.99782778 -0.99938456\n",
" -0.99075324 -0.97202182 -0.94338126 -0.90512352 -0.85763861 -0.80141062\n",
" -0.73701276 -0.66510151 -0.58640998 -0.50174037 -0.41195583 -0.31797166\n",
" -0.22074597 -0.12126992 -0.0205576 0.0803643 0.18046693 0.27872982\n",
" 0.37415123 0.46575841 0.55261747 0.63384295 0.7086068 0.77614685\n",
" 0.83577457 0.8868821 0.92894843 0.96154471 0.98433866 0.99709789\n",
" 0.99969234 0.99209556 0.97438499 0.94674118 0.90944594 0.86287948\n",
" 0.8075165 0.74392141 0.6727425 0.59470541 0.51060568 0.42130064\n",
" 0.32770071 0.23076008 0.13146699 0.03083368 -0.07011396 -0.17034683\n",
" -0.26884313 -0.36459873 -0.45663749 -0.54402111]\n",
"[0.10083842 0.20064886 0.2984138 0.39313661 0.48385164 0.56963411\n",
" 0.64960951 0.72296256 0.78894546 0.84688556 0.8961922 0.93636273\n",
" 0.96698762 0.98775469 0.99845223 0.99897117 0.98930624 0.96955595\n",
" 0.93992165 0.90070545 0.85230712 0.79522006 0.73002623 0.65739025\n",
" 0.57805259 0.49282204 0.40256749 0.30820902 0.21070855 0.11106004\n",
" 0.01027934 0.0803643 0.18046693 0.27872982 0.37415123 0.46575841\n",
" 0.55261747 0.63384295 0.7086068 0.77614685 0.83577457 0.8868821\n",
" 0.92894843 0.96154471 0.98433866 0.99709789 0.99969234 0.99209556\n",
" 0.97438499 0.94674118 0.90944594 0.86287948 0.8075165 0.74392141\n",
" 0.6727425 0.59470541 0.51060568 0.42130064 0.32770071 0.23076008\n",
" 0.13146699 0.03083368]\n"
]
}
],
"source": [
"t = np.linspace(0.0,10.0,100)\n",
"t = np.sin(t)\n",
"print(t)\n",
"mask = t > 0\n",
"t = t[mask]\n",
"print(t)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "base",
"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.11.9"
}
},
"nbformat": 4,
"nbformat_minor": 2
}