Skip to content

Instantly share code, notes, and snippets.

@mablue
Created August 13, 2022 17:47
Show Gist options
  • Save mablue/4c27f920be8a77a4fcabb7b71bb9d13b to your computer and use it in GitHub Desktop.
Save mablue/4c27f920be8a77a4fcabb7b71bb9d13b to your computer and use it in GitHub Desktop.
Circular Average.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "Circular Average.ipynb",
"provenance": [],
"collapsed_sections": [],
"authorship_tag": "ABX9TyMy2EHtDUYzWQGrUGkl78vd",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/mablue/4c27f920be8a77a4fcabb7b71bb9d13b/circular-average.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"source": [
"\n",
"# Circular average calculation for 24 hour daily periods\n",
"this calculation is just for fixing normal average problem on 24 hour day periods\n",
"for understanding what we want to do think to that:\n",
"If we have two hours [2,22] we want to average them to 24 but if we calculate it with normal mean the result will be wrong:\n",
"(2+22)/2=12 \n",
"we know that the periodic things will not average like that and we should use another method to calculate mean of this like numbers.\n",
"In this article we use python coding to fix this problem and generate the realistic average of hours\n",
"by: Masoud Azizi @mablue mablue92@gmail.com"
],
"metadata": {
"id": "9lwZDeWcSvAl"
}
},
{
"cell_type": "code",
"source": [
"!pip install matplotlib numpy"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Tfuuz_9tjN4n",
"outputId": "132fef4d-b1bf-4645-8f2a-e5b43b4f31be"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
"Requirement already satisfied: matplotlib in /usr/local/lib/python3.7/dist-packages (3.2.2)\n",
"Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (1.21.6)\n",
"Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib) (1.4.4)\n",
"Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.7/dist-packages (from matplotlib) (0.11.0)\n",
"Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib) (2.8.2)\n",
"Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib) (3.0.9)\n",
"Requirement already satisfied: typing-extensions in /usr/local/lib/python3.7/dist-packages (from kiwisolver>=1.0.1->matplotlib) (4.1.1)\n",
"Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.7/dist-packages (from python-dateutil>=2.1->matplotlib) (1.15.0)\n"
]
}
]
},
{
"cell_type": "code",
"execution_count": 137,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "M_UowEKdjBoM",
"outputId": "ddb113cb-bc49-421e-c71c-fc685486a517"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.\n",
" 18. 19. 20. 21. 22. 23. 24.]\n",
"[ 7. 4. 16. 15.]\n",
"[0. 0.26179939 0.52359878 0.78539816 1.04719755 1.30899694\n",
" 1.57079633 1.83259571 2.0943951 2.35619449 2.61799388 2.87979327\n",
" 3.14159265 3.40339204 3.66519143 3.92699082 4.1887902 4.45058959\n",
" 4.71238898 4.97418837 5.23598776 5.49778714 5.75958653 6.02138592\n",
" 6.28318531]\n",
"[1.83259571 1.04719755 4.1887902 3.92699082]\n"
]
}
],
"source": [
"import math\n",
"import matplotlib.pyplot as mpl\n",
"import random \n",
"import numpy as np \n",
"\n",
"all = np.linspace(0,24,25)\n",
"\n",
"\n",
"hours = np.array([21,12,12,3])\n",
"hours = np.array([21,12,3])\n",
"hours = np.array([9,0,15])\n",
"\n",
"#hours = np.array([23,3,12,11])\n",
"#hours = np.array([15,16])\n",
"#hours = np.array([23,14,18])\n",
"hours = np.random.choice(all,4)\n",
"\n",
"print(all)\n",
"print(hours)\n",
"\n",
"\n",
"all = (2*np.pi)*(all/24)\n",
"hours = (2*np.pi)*(hours/24)\n",
"\n",
"print(all)\n",
"print(hours)"
]
},
{
"cell_type": "code",
"source": [
"import itertools\n",
"\n",
"all_y = [math.sin(n) for n in all]\n",
"all_x = [math.cos(n) for n in all]\n",
"\n",
"all_x_avg = np.mean(all_x)\n",
"all_y_avg = np.mean(all_y)\n",
"\n",
"marker = itertools.cycle([f\"${n}$\" for n in range(0,24)])\n",
"for i in range(len(all_x)) :\n",
" mpl.scatter(x=all_x[i],y=all_y[i],c=\"gray\",marker=next(marker))\n",
"mpl.scatter(x=all_x_avg,y=all_y_avg,marker=\"$A$\")\n",
"#----------\n",
"\n",
"hours_y = [math.sin(n) for n in hours]\n",
"hours_x = [math.cos(n) for n in hours]\n",
"\n",
"hours_x_avg = np.mean(hours_x)\n",
"hours_y_avg = np.mean(hours_y)\n",
"\n",
"\n",
"mpl.scatter(x=hours_x,y=hours_y)\n",
"\n",
"mpl.scatter(x=hours_x_avg,y=hours_y_avg,marker=\"$H$\")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 267
},
"id": "UiNK6v9Oo8L9",
"outputId": "608e8a6b-972f-4401-8eb0-1df9ba15e794"
},
"execution_count": 138,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7fa0f0ab9850>"
]
},
"metadata": {},
"execution_count": 138
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD4CAYAAADhNOGaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3dfXRV9Z3v8fdXMIDyGIgUkCcFHxAttkcGtb21iAXsrdCOxdixUqul451Ob+uauYXljIxMe69t1xqt1GtlWSh1VFCUNk7r4iKibS0oERAEBSJUkoAQCEQgJCHwvX/snXQTThLCOclO2J/XWmdl79/+7X0+7ITzPfvhnJ+5OyIiklznxB1ARETipUIgIpJwKgQiIgmnQiAiknAqBCIiCdc57gBnol+/fj5s2LC4Y4iIdChvv/32PnfPa9jeIQvBsGHDKCwsjDuGiEiHYmYfpmvXqSERkYRTIRARSTgVAhGRhFMhEBFJOBUCEZGEy8pdQ2Y2H/jvwF53H51muQE/A24GKoFvuPvacNl04F/Crj9094XZyCTS1tauXctLL70EwJAhQ7jrrrtiTiRyerJ1RPArYFITyycDI8PHDOBxADPLBWYDfwOMBWabWZ8sZRJpMzt37qwvAv369ePAgQMxJxI5fVkpBO7+B6C8iS5TgF97YDXQ28wGABOB5e5e7u4HgOU0XVBE2qW1a9fWT+/fv59Jk/RnLB1HW10jGAQUR+ZLwrbG2k9hZjPMrNDMCsvKylotqMiZiB4BuDvPP/88R44ciTGRyOnrMJ8sdvd5wDyAVCql0XQSaMPT/8qQbQvoxSEq6MEKPsO1M/6DgQMHxh2N7t27AzB9+nQ2bdpEYWEh+/bt4/zzz485WaCoqIinn366fv6CCy7g3nvvjTGRtCdtdURQCgyOzF8YtjXWLnKyDc8xevsT9OYQBvTmEF9iOX13vRp3MgBGjRoFwOLFi+u//qRv375xRjpJVVUVEFy/GDZsGFdccUXMiaQ9aatCUADcaYFxQIW77waWAV8wsz7hReIvhG0iJ1sxh3OOV5/UlEMtXf74UEyBTjZq1ChSqVT9C+7UqVPrjxLag7ohafft20dpaWm7OIqS9iNbt48+C9wA9DOzEoI7gc4FcPdfAL8nuHW0iOD20bvCZeVm9u/AmnBTc9y9qYvOklQVJS1rb2Nmxhe/+EW++MUvxh0lrbqiNGjQIEpLS3n66aeZNWsWOTk5MSeT9iArhcDdb29muQP/0Miy+cD8bOSQs1ivC6GiOH27NGv48OE88MADmBnPPvssW7du5cCBA/Tv3z/uaNIOdJiLxZJwNz4AL30Xjh39a9u53YJ2aVZBQQHr1q1j4MCB7Nq1C4A+ffSRHQnoKyakY7hqGnzpUQ53zsWB4z0GwZceDdqlWXXXBHbt2kWXLl34u7/7O50WknpWdxGpI0mlUq6BaUREWsbM3nb3VMN2HRGIiCScrhFIWlVVVTz99NOUlAR35dxyyy1cffXVMaeSs8aG52DFHLyimAp68NEV3+ayr/5r3KkSS0cEktZbb71FSUlJ/YeiCgoKOHbsWMyp5Kyw4bngwn9Fcf2HA0e+92jQLrFQIZC06q4dRe8s6YjXk6QdWjHn5Lu/gE4naoJ2iYUKgaT1iU98Agi+o6ZO5846kyhZ0MiHAL2dfDgwiVQIJK01a4IPe0+bNo3hw4cDsHv37jgjydmikQ8BHut2QRsHkToqBJJWr169AFi5ciU7duwAaFffnSMd2I0PcPycLic1HeNcqj7zg5gCiQqBpDV+/HgGDBhA3dgPkyZNqi8OIhm5ahqdpv4ceg3GMQ7Sgw+u+J/0vP7uuJMllj5QJiKSEPpAmYiIpKVCICKScCoEIiIJp0IgIpJwWSkEZjbJzLaYWZGZzUyz/GEzWx8+tprZwciy45FlBdnIIyIipy/jj4qaWSfgMeAmoARYY2YF7r65ro+7fz/S/x+B6LeXHXX3MZnmEBGRM5ONI4KxQJG7b3f3GmARMKWJ/rcDz2bheUVEJAuyUQgGAdHBZEvCtlOY2VBgOPBqpLmrmRWa2Wozm9rYk5jZjLBfYd2HnEREJHNt/S1i+cASdz8eaRvq7qVmdhHwqpltdPcPGq7o7vOAeRB8oKxt4sarqqqKZ555huLiYs455xzuueceBgwYEHcskQ5v+/btPPXUU/XzX/3qVxk1alSMieKVjSOCUmBwZP7CsC2dfBqcFnL30vDnduA1Tr5+kGgrV66kuLiY3NxcTpw4wS9/+Ut9FbRIFlRVVQEwZMgQAJ5//nlOnDgRZ6RYZaMQrAFGmtlwM8sheLE/5e4fM7sM6AOsirT1MbMu4XQ/4Hpgc8N1k2rXrl0A3HXXXQwaNIjjx49TXl4ecyqRjm/UqFHceeedDBw4sL4tyW+yMi4E7l4LfAdYBrwHPOfum8xsjpndEumaDyzyk/f25UChmb0DrAQeit5tlHQXXhh8Xe/cuXMpLQ0OsiorK+OMJHLW2LhxI6tXr66fP+ec5H6sKivXCNz998DvG7Q90GD+39Ks92fgymxkOBvdcMMNlJeXs3Xr1vq2nj17xphI5Oxx880389nPfpYXXniB0tJS9u3bR15eXtyxYqEhp9qx4uJitm7dSl5eHmVlZeTl5akQiGRBQUEB69atY/DgwfVH2z169Ig5VXySeyzUAZx33nkAlJWV0b9/f77+9a9jZjGnEun4hg4dCgRvtjp16sRtt91G165dY04VH41HICKSEBqPQERE0lIhEBFJOBUCEZGEUyEQEUk4FQIRkYRTIRARSTgVAhGRhFMhEBFJOBUCEZGEUyEQEUk4FQIRkYRTIRARSTgVAhGRhMvKeARmNgn4GdAJeNLdH2qw/BvAT/nrWMY/d/cnw2XTgX8J23/o7guzkUlEJC5/+ctfePbZZ6mpqcHMmDZtGpdddlncsRqV8RGBmXUCHgMmA6OA281sVJqui919TPioKwK5wGzgb4CxwGwz65NpptZWXFzMgw8+yBNPPEFtbS1z587lwQcfZMuWLXFHE5F24P3336empoYBAwbg7ixevJja2tq4YzUqG6eGxgJF7r7d3WuARcCU01x3IrDc3cvd/QCwHJiUhUytqqqqCoCPPvqITZs21Q8ov2jRojhjiUg7MX78eGbNmsW3vvUtcnNzgb++brRH2SgEg4DiyHxJ2NbQ35rZBjNbYmaDW7guZjbDzArNrLCsrCwLsc/cyJEjGTlyJAAHDx4EYNy4cXFGEpF2JCcnh5ycHFasWEF5eTmDBw+me/fuccdqVFtdLH4JGObuVxG862/xdQB3n+fuKXdPxT3AdFlZGdu2bQOCc4EAq1evjjGRiLQ3r7/+Om+88QbdunXj9ttvjztOk7JRCEqBwZH5C/nrRWEA3H2/u1eHs08Cnz7dddujysrK+ul+/frVH/rl5+fHFUlE2pG1a9fy2muvAdC7d2+WLl3ark8NZeOuoTXASDMbTvAing98LdrBzAa4++5w9hbgvXB6GfC/IxeIvwDMykKmVjV06FBmz54ddwwRaafqrhsC7N4dvPRVVVXRtWvXuCI1KeNC4O61ZvYdghf1TsB8d99kZnOAQncvAL5rZrcAtUA58I1w3XIz+3eCYgIwx93LT3kSEZEOZMKECUyYMCHuGKfN3D3uDC2WSqW8sLAw7hgiIh2Kmb3t7qmG7fpksYhIwqkQiIgknAqBiEjCqRCIiCScCoGISMKpEIiIJJwKgYhIwqkQiIgknAqBiEjCqRCIiCScCoGISMKpEIiIJJwKgYhIwqkQiIgkXDYGphERkSzZs2cPzzzzDB9//DG9evXie9/7Xqs/Z1YKgZlNAn5GMDDNk+7+UIPl9wH3EAxMUwZ8090/DJcdBzaGXXe6+y3ZyNScnTt3smDBArp37863v/1t5s6dS01NDd///vfp2bNnW0QQETnFoUOH+PjjjwGoqKhok+fM+NSQmXUCHgMmA6OA281sVINu64BUOHj9EuAnkWVH3X1M+GiTIgBw7NgxAA4fPsyJEyeora0Nwhw92lYRREROMWLECB544AHMrM2eMxvXCMYCRe6+3d1rgEXAlGgHd1/p7nUjvq8mGKQ+VhdffDGf/OQnAejZsye33nprzIlERAJtWQQgO4VgEFAcmS8J2xpzN/ByZL6rmRWa2Wozm9rYSmY2I+xXWFZWllliYP/+/WzcGJyRWr16NX/+858B+OMf/5jxtkVEOpI2vWvIzO4AUsBPI81DwzE0vwY8YmYXp1vX3ee5e8rdU3l5eRlnOXToECdOnACgqKiIkpISAN5///2Mty0icqYOHz7MU089Rd148r/+9a/rrxm0lmxcLC4FBkfmLwzbTmJmE4D7gc+5e3Vdu7uXhj+3m9lrwNXAB1nI1aRhw4Yxe/bs1n4aEZEWOXr0KNu3b6+f37FjB0ePHm3Vm1isruqc8QbMOgNbgRsJCsAa4GvuvinS52qCi8ST3H1bpL0PUOnu1WbWD1gFTHH3zU09ZyqV8sLCwoxyi4gkjZm9HZ6BOUnGRwTuXmtm3wGWEdw+Ot/dN5nZHKDQ3QsITgV1B54PL4LU3SZ6OfCEmZ0gOE31UHNFQEREsivjI4I46IhARKTlGjsi0FdMiIgknAqBiEjCqRCIiCScCoGISMKpEIiIJJwKgYhIwqkQiIgknAqBiEjCqRCIiCScCoGISMKpEEiHM2fVHD658JPs/HgnAFN+M4XPLf5czKlEOi4VAulw3tj1Bic4Qb9u/Thy7AjbK7bTrXO3uGOJdFhZGbxepK0cO36MXYd3YRhz183lQPUBAMZcMCbmZCIdlwqBdChFB4sAcJz/fO8/69s/dcGn4ook0uHp1JB0KO+VvwfA3aPv5r++/F9cO+BaAC7PvTzOWCIdmgqBdCjv7H0HgGsHXsvQnkP5oCIY1XRkn5FxxhLp0LJSCMxskpltMbMiM5uZZnkXM1scLn/TzIZFls0K27eY2cRs5JGz176qfeSck8PlfYMjgOrj1VzS5xK6du4ac7KmFawvZdjM3/H9xevijiIdUG1tLY8++igPPvggDz74IGvXrs3q9jO+RmBmnYDHgJuAEmCNmRU0GHLybuCAu48ws3zgx8BtZjYKyAeuAAYCr5jZJe5+PNNcUcXFxcyfP5+ePXsyffp05s6dC8DEiRMZN25cNp9KWtljNz520vyf8v8UU5LTd6S6lu8uWg/Aa1vKYk4jHdHLL7/MgQMH6udfeuklrrrqKjp3zs5l3mwcEYwFitx9u7vXAIuAKQ36TAEWhtNLgBstGLx4CrDI3avdfQdQFG4vq6qrqwH4+OOPOXLkCF27Bu8ely1blu2nEjnFz17ZVj99oPIYVcey+j5HEmDLli0A5Ofn0717dwA++OCDrG0/G4VgEFAcmS8J29L2cfdaoALoe5rrAmBmM8ys0MwKy8pa9q5qxIgRfPrTnwZg8ODB3HnnnQB066Z7z6V1FZdXMu+P2wG4ZlgfALbuORRnJOmAampqAMjLy+P8888HoKKiImvb7zAXi919nrun3D2Vl5fXonUPHjxYX1FXrlzJvHnzABg9enTWc4pEzXpxY/30mr8Eh/bv7f44rjjSQeXk5ABQVlbGkSNHAOjVq1fWtp+NQlAKDI7MXxi2pe1jZp2BXsD+01w3YwcOHODw4cMArFq1qr59zZo12X4qkXp//mAffyrax0X9zmfm5Mu4Y9wQANbtPBhzMuloLr30UgAWLVpU/1p28cUXZ2372bjSsAYYaWbDCV7E84GvNehTAEwHVgG3Aq+6u5tZAfCMmf0HwcXikcBbWch0kuHDhzN79uxsb1akSQve+AsAP//apxg1sCdlh6pZ9FYx+4/UxBtMOpzJkyezY8eO+gvGX/rSl7J2oRjA3D3zjZjdDDwCdALmu/uPzGwOUOjuBWbWFXgKuBooB/LdfXu47v3AN4Fa4Hvu/nJzz5dKpbywsDDj3CIiSWJmb7t76pT2bBSCtqZCICLSco0Vgg5zsVhERFqHCoGISMKpEIiIJJwKgYhIwqkQiIgknAqBiEjCqRCIiCScCoGISMKpEIiIJJwKgYhIwqkQiIgknAqBiEjCqRCIiCScCoGISMKpEIiIJJwKgYhIwmVUCMws18yWm9m28GefNH3GmNkqM9tkZhvM7LbIsl+Z2Q4zWx8+xmSSR0REWi7TI4KZwAp3HwmsCOcbqgTudPcrgEnAI2bWO7L8n919TPhYn2EeERFpoUxHP54C3BBOLwReA34Q7eDuWyPTu8xsL5AHHMzwuTOyc+dOFixYQG5uLrfddhuPP/44EAwSPXbs2DijiUhCrV27lpdeegmAL3/5yyxduhRo/delTI8I+rv77nD6I6B/U53NbCyQA3wQaf5ReMroYTPr0sS6M8ys0MwKy8rKMowNNTU1AJSXl9OpUyfOO+88AF5++eWMty0iciaqqqro0yc4w75s2bI2e11qthCY2Stm9m6ax5RoP3d3wJvYzgDgKeAudz8RNs8CLgOuAXJpcDTRYPvz3D3l7qm8vLzm/2XNGDFiBKNGjQKgb9++9TtcRCQu1113Xf3r0mc/+9k2e11q9tSQu09obJmZ7TGzAe6+O3yh39tIv57A74D73X11ZNt1RxPVZrYA+KcWpc/Avn372Lx5MwBLly7lnHN0A5WIxOvtt9/mjTfeAKCsrKzNXpcyfZYCYHo4PR34bcMOZpYDLAV+7e5LGiwbEP40YCrwboZ5TtuRI0fqp/fu3cvevUENmzx5cltFEBE5SWVlZf10WVlZm70uWXBG5wxXNusLPAcMAT4Eprl7uZmlgL9393vM7A5gAbApsuo33H29mb1KcOHYgPXhOoebe95UKuWFhYVnnFtEJInM7G13T53SnkkhiIsKgYhIyzVWCHRiXEQk4VQIREQSToVARCThVAhERBJOhUBEJOFUCEREEk6FQEQk4VQIREQSToVARCThVAhERBJOhUBEJOFUCEREEk6FQEQk4VQIREQSToVARCThMioEZpZrZsvNbFv4s08j/Y6b2frwURBpH25mb5pZkZktDkczExGRNtTsmMXNmAmscPeHzGxmOJ9uAPqj7j4mTfuPgYfdfZGZ/QK4G3g8w0ytrri4mPnz5zNkyBDuuusuysvLmTt3LtOmTePyyy+PO56IxGj9+vX89rfBqL1f+cpXePHFFwGYOHEi48aNizNaozI9NTQFWBhOLyQYd/i0hOMUjwfqxjFu0fpxOnr0KAA7d+7E3Zk7dy5A/fiiIpJcR44coUePHgC8+OKLdO3aFYBly5bFGatJmRaC/u6+O5z+COjfSL+uZlZoZqvNrO7Fvi9w0N1rw/kSYFBjT2RmM8JtFJaVlWUYOzOXXHIJw4cPB2DVqlX17Vu2bIkrkoi0E9dffz3XXXcdAJ/5zGe48847AejWrVucsZrU7KkhM3sF+ESaRfdHZ9zdzayxAZCHunupmV0EvGpmG4GKlgR193nAPAjGLG7Jutm2d+9eduzYAcAf/vCH+vbdu3c3toqIJMTGjRvr3/137tyZefPmATB69Og4YzWp2SMCd5/g7qPTPH4L7DGzAQDhz7TnRty9NPy5HXgNuBrYD/Q2s7pidCFQmvG/qA3UnRoCuOaaa5g9ezb9+vVj2rRpMaYSkfYgeop4zZo1aafbG3M/8zfXZvZTYH/kYnGuu/+vBn36AJXuXm1m/YBVwBR332xmzwMvRC4Wb3D3/9vc86ZSKS8sLDzj3CIiSWRmb7t7qmF7ptcIHgJuMrNtwIRwHjNLmdmTYZ/LgUIzewdYCTzk7pvDZT8A7jOzIoJrBr/MMI+IiLRQRkcEcdERgYhIy7XWEYGIiHRwKgQiIgmnQiAiknAqBCIiCadCICKScCoEIiIJp0IgIpJwKgQiIgmnQiAiknAqBCIiCadCICKScCoEIiIJp0LQnm14Dh4eDf/WO/i54bm4E4nIWSjTweullZSteIxef3yAHMKRPCuKqXnxXtavWcPYu38abziRDiw6uPwdd9zBb37zGw4fPsx9991XP9Zw0uiIoJ3qvXbuX4tAKIdarty7NKZEImeHI0eOcP755wPwwgsvcPjwYQAqKyvjjBUrFYJ26twjH6Vt71pd1sZJRM4u0cHlx44dqyFmybAQmFmumS03s23hzz5p+nzezNZHHlVmNjVc9isz2xFZNiaTPGeT490HpG2vIJmHriLZsmHDBpYvXw5Ar169qBvk6s0334wzVqwyPSKYCaxw95HAinD+JO6+0t3HuPsYYDxQCfy/SJd/rlvu7uszzHPWOPDp71LT4BJODZ35OPW9mBKJnB327dtXP71582a2b98OwLp16+KKFLtMLxZPAW4IpxcCrxGMQ9yYW4GX3T25J+NOU7/P3wt9+8KKOVBRAr0uJOfGBxhylQ5jRTIxfvx4xo8fH3eMdiWjMYvN7KC79w6nDThQN99I/1eB/3D3/wrnfwVcC1QTHlG4e3Uj684AZgAMGTLk0x9++OEZ5xYRSaIzHrPYzF4xs3fTPKZE+3lQURqtKmY2ALgSWBZpngVcBlwD5NLE0YS7z3P3lLun8vLymostIiKnqdlTQ+4+obFlZrbHzAa4++7whX5vE5uaBix192ORbe8OJ6vNbAHwT6eZW0REsiTTi8UFwPRwejrw2yb63g48G20Ii0fdaaWpwLsZ5hERkRbKtBA8BNxkZtuACeE8ZpYysyfrOpnZMGAw8HqD9Z82s43ARqAf8MMM84iISAtldNeQu+8HbkzTXgjcE5n/CzAoTT9duhcRiZk+WSwiknAqBCIiCadCICKScCoEkp7GQhBJDI1HIKfYv/Jxerz+L6eMhfBOYSHXfPMn8YaTDm/dunUUFBQAMGPGDJYsWUJ5eTn5+flceumlMadLJh0RyCl6rnkk7VgIo3YviSmRnE0qKyvp3r07APPmzaO8vByARYsWxRkr0VQI5BTnVu5J237esf1tnETORtdffz1XXHEFEHwNNMC4cePijJR4KgRyCo2FIK3prbfeqv/u/7rvDVu9enWckRJPhUBOUf6pf0w7FkL5mO/ElEjOJjU1NfXTF1xwAbm5uQDk5+fHFSnxMvoa6rikUimvG1VIWsmG504aC4EbHwCNhSDSoTX2NdS6a0jSu2qaXvhFEkKnhkREEk6FQEQk4VQIREQSTtcIpEPYuXMnCxYsoFevXkydOpWFCxcC0KVLF2bOnBlzuvatbt/179+f6dOn8/DDD3Ps2DF9klfq6YhAOoS6Ww4rKiro0aMHF110EQDV1dVxxuoQ6vbRnj17WLt2LceOBaPF6pO8UiejQmBmXzWzTWZ2wsxOuSUp0m+SmW0xsyIzmxlpH25mb4bti80sJ5M8cvYaMWIEo0ePBqBv377cdNNNAEyePDnOWB3CyJEjueSSSwDqv9pBJCrTU0PvAl8Bnmisg5l1Ah4DbgJKgDVmVuDum4EfAw+7+yIz+wVwN/B4hpnkLLR//37efTcY0rqwsJD3338fgKuuuirOWAAUFxczf/78+lMvjzzyCDU1NUycOLFdfHVCWVkZW7duBWDfvn0xp5H2KKMjAnd/z923NNNtLFDk7tvdvQZYBEwJB6wfD9R9k9lCggHsRU5x6NCh+uni4mIArrzySrp27RpXpHpVVVVAcOpl69at9aexli1bFmesepWVlfXT0ULwrW99K4440g61xcXiQUBxZL4E+BugL3DQ3Wsj7aeMa1zHzGYAMwCGDBnSOkml3Ro2bBizZ8+OO0Zadadetm7dyrnnnht3nFMMHTq03e47aR+aLQRm9grwiTSL7nf332Y/UnruPg+YB8FXTLTV84o0J3rq5fXXX485jUjLNVsI3H1Chs9RCgyOzF8Ytu0HeptZ5/CooK5dpEOJnnrp378/5eXl1NbWcuONN8aYSuT0tcWpoTXASDMbTvBCnw98zd3dzFYCtxJcN5gOtNkRhki26NSLdHSZ3j76ZTMrAa4Ffmdmy8L2gWb2e4Dw3f53gGXAe8Bz7r4p3MQPgPvMrIjgmsEvM8kjIiItp6+hFhFJiMa+hlqfLBYRSTgVAhGRhFMhEBFJOBUCEZGE65AXi82sDPjwDFfvB7THL1xRrpZRrpZRrpY5W3MNdfe8ho0dshBkwswK0101j5tytYxytYxytUzScunUkIhIwqkQiIgkXBILwby4AzRCuVpGuVpGuVomUbkSd41AREROlsQjAhERiVAhEBFJuLOyEJjZV81sk5mdMLNGb7Uys0lmtsXMisxsZqR9uJm9GbYvNrOcLOXKNbPlZrYt/NknTZ/Pm9n6yKPKzKaGy35lZjsiy8a0Va6w3/HIcxdE2uPcX2PMbFX4+95gZrdFlmV1fzX29xJZ3iX89xeF+2NYZNmssH2LmU3MJMcZ5LrPzDaH+2eFmQ2NLEv7O22jXN8ws7LI898TWTY9/L1vM7PpbZzr4UimrWZ2MLKsVfaXmc03s71m9m4jy83MHg0zbzCzT0WWZb6v3P2sewCXA5cCrwGpRvp0Aj4ALgJygHeAUeGy54D8cPoXwL1ZyvUTYGY4PRP4cTP9c4Fy4Lxw/lfAra2wv04rF3C4kfbY9hdwCTAynB4I7AZ6Z3t/NfX3EunzP4BfhNP5wOJwelTYvwswPNxOpzbM9fnI39C9dbma+p22Ua5vAD9Ps24usD382Sec7tNWuRr0/0dgfhvsr/8GfAp4t5HlNwMvAwaMA97M5r46K48I3P09d9/STLexQJG7b3f3GoLBcaaYmQHjgSVhv4XA1CxFmxJu73S3eyvwsrtXNtMvUy3NVS/u/eXuW919Wzi9C9gLnPLJySxI+/fSRN4lwI3h/pkCLHL3anffARSF22uTXO6+MvI3tJpgNMDWdjr7qzETgeXuXu7uB4DlwKSYct0OPJul526Uu/+B4E1fY6YAv/bAaoLRHQeQpX11VhaC0zQIKI7Ml4RtfYGDHgyoE23Phv7uvjuc/gjo30z/fE79I/xReGj4sJl1aeNcXc2s0MxW152uoh3tLzMbS/Au74NIc7b2V2N/L2n7hPujgmD/nM66rZkr6m6Cd5Z10v1O2zLX34a/nyVmVjekbbvYX+EptOHAq5Hm1tpfzWksd1b2VVsMVdkqzOwV4BNpFt3v7rENedlUrkFIaXcAAALLSURBVOiMu7uZNXrvbljtryQY2a3OLIIXxByC+4l/AMxpw1xD3b3UzC4CXjWzjQQvdmcsy/vrKWC6u58Im894f52NzOwOIAV8LtJ8yu/U3T9Iv4Wsewl41t2rzezbBEdT49vouU9HPrDE3Y9H2uLcX62mwxYCd5+Q4SZKgcGR+QvDtv0Eh12dw3d1de0Z5zKzPWY2wN13hy9ce5vY1DRgqbsfi2y77t1xtZktAP6pLXO5e2n4c7uZvQZcDbxAzPvLzHoCvyN4E7A6su0z3l9pNPb3kq5PiZl1BnoR/D2dzrqtmQszm0BQXD/n7tV17Y38TrPxwtZsLnffH5l9kuCaUN26NzRY97UsZDqtXBH5wD9EG1pxfzWnsdxZ2VdJPjW0BhhpwR0vOQS/9AIPrsCsJDg/DzAdyNYRRkG4vdPZ7innJsMXw7rz8lOBtHcYtEYuM+tTd2rFzPoB1wOb495f4e9uKcH50yUNlmVzf6X9e2ki763Aq+H+KQDyLbiraDgwEngrgywtymVmVwNPALe4+95Ie9rfaRvmGhCZvYVgTHMIjoK/EObrA3yBk4+MWzVXmO0ygouvqyJtrbm/mlMA3BnePTQOqAjf6GRnX7XGFfC4H8CXCc6VVQN7gGVh+0Dg95F+NwNbCSr6/ZH2iwj+oxYBzwNdspSrL7AC2Aa8AuSG7SngyUi/YQSV/pwG678KbCR4QftPoHtb5QKuC5/7nfDn3e1hfwF3AMeA9ZHHmNbYX+n+XghONd0STncN//1F4f64KLLu/eF6W4DJWf57by7XK+H/g7r9U9Dc77SNcv0fYFP4/CuByyLrfjPcj0XAXW2ZK5z/N+ChBuu12v4ieNO3O/xbLiG4lvP3wN+Hyw14LMy8kcjdkNnYV/qKCRGRhEvyqSEREUGFQEQk8VQIREQSToVARCThVAhERBJOhUBEJOFUCEREEu7/A1N5tVI5QsX4AAAAAElFTkSuQmCC\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"source": [
"all_avg = np.arctan2(all_y_avg,all_x_avg)*24/(2*np.pi)\n",
"hours_avg = np.arctan2(hours_y_avg,hours_x_avg)*24/(2*np.pi)\n",
"print(\"All Average: \",round(all_avg))\n",
"print(\"Hours Average: \",round(hours_avg%24,2))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "bbqp6fz6qCHB",
"outputId": "16ed679e-f7b3-4beb-ddf4-18b3063daf13"
},
"execution_count": 139,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"All Average: 0\n",
"Hours Average: 11.0\n"
]
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment