{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "toc": true
   },
   "source": [
    "<h1>Table of Contents<span class=\"tocSkip\"></span></h1>\n",
    "<div class=\"toc\"><ul class=\"toc-item\"><li><span><a href=\"#ndarray对象的核心之广播功能(broadcasting)\" data-toc-modified-id=\"ndarray对象的核心之广播功能(broadcasting)-1\"><span class=\"toc-item-num\">1&nbsp;&nbsp;</span>ndarray对象的核心之广播功能(broadcasting)</a></span></li><li><span><a href=\"#算术运算的相关函数\" data-toc-modified-id=\"算术运算的相关函数-2\"><span class=\"toc-item-num\">2&nbsp;&nbsp;</span>算术运算的相关函数</a></span><ul class=\"toc-item\"><li><span><a href=\"#练习\" data-toc-modified-id=\"练习-2.1\"><span class=\"toc-item-num\">2.1&nbsp;&nbsp;</span>练习</a></span><ul class=\"toc-item\"><li><span><a href=\"#计算e的x次方,x是a中的每一个元素\" data-toc-modified-id=\"计算e的x次方,x是a中的每一个元素-2.1.1\"><span class=\"toc-item-num\">2.1.1&nbsp;&nbsp;</span>计算e的x次方,x是a中的每一个元素</a></span></li><li><span><a href=\"#计算2的x次方,x是a中的每一个元素\" data-toc-modified-id=\"计算2的x次方,x是a中的每一个元素-2.1.2\"><span class=\"toc-item-num\">2.1.2&nbsp;&nbsp;</span>计算2的x次方,x是a中的每一个元素</a></span></li><li><span><a href=\"#对数组中的所有元素计算exp(x)---1\" data-toc-modified-id=\"对数组中的所有元素计算exp(x)---1-2.1.3\"><span class=\"toc-item-num\">2.1.3&nbsp;&nbsp;</span>对数组中的所有元素计算exp(x) - 1</a></span></li></ul></li></ul></li></ul></div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "#全部行都能输出\n",
    "from IPython.core.interactiveshell import InteractiveShell\n",
    "InteractiveShell.ast_node_interactivity = \"all\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ndarray对象的核心之广播功能(broadcasting)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "术语广播是指 NumPy 在算术运算期间处理不同形状的数组的能力。对数组的算术运算通常在\n",
    "相应的元素上进行。如果两个阵列具有完全相同的形状,则这些操作被无缝执行。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "如果两个数组的维数不相同,则元素到元素的操作是不可能的。然而,在 NumPy 中仍然可以对形状不相似的数组进行操作,因为它拥有广播功能。较小的数组会广播到较大数组的大小,以便使它们的形状可兼容。  \n",
    "  \n",
    "广播内在机制非常繁琐,这里给一种简单的规则描述,必须满足一下规则才能广播:\n",
    "\n",
    "- 1 两个数组的维度必须相同\n",
    "- 2 如果维度不同,会在维度少的数组上增加维度,并使得该维度的长度为1\n",
    "- 3 有且仅有一个维度的长度不同,而且该值必须是1\n",
    "- 4 广播会在长度为1的那个维度上进行\n",
    "- 5 如果是标量则会直接作用到数组中的每个元素上"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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WMrC0UQwiZ90bJPlU10Xhg8fHgixe/fuwDRREhC2P2uqePdHzeZVk/ewSWxY0yS+DLZMmqi1kobcY3ksIiFpYUDmdRS8b60iELY/q6p490elq8RAdhggh54dW8amybfffhubrKQJwm5kQeGqq64KShLpOmH706aKd39UukoM6GVAbNikApUcugpWUyxzz5497K677uIaVFdXp1gT96IH7Ub25ptvsmHDhvENVQYPHszAh1jUhSN2b5s4cSJbsmQJe/XVVxm+oIZ57hEjRrAdO3bkpcV7tKNHj+bvV8+ZM4d9/PHHfKEP3rXdvHlzXlqspO/Xrx976KGHjGBD17vvvtsI9tChQxk+zAIOKRADWWbg888/z+1AJ7slcig+oo7VF5pP5TyCTNlM4icVG3OYl156qVWvXj1r9OjRVm1trQyVqUqzePFiz/IOHTrU2r9/v+f1Qi/4YU+dOtXauHFjoRCe+f2wq6qqrPnz53vmLfSCH/auXbt4XSsUg/LnM5DUNia/lGp+JVX3devWWc2aNbOOP/54a+7cuUraV+qhh3r8yW5i9ESvvPJK9sYbbzBsItK7d++8HdKyornbbmRYvf3ee++xXr16sZKSEmWqumED7K233uJvaxx99NHasaH3CSecwM4991zt2OvWrWMbN25kN910kzJsEkwMJIEB9MwvuOACXhTc77/61a+UtK/k0JNgbcNlsDtzDA1jU4esBuduZNB9//79XF3sVa4yOLGBJTatMYWNB5gDDjiA1atXT5nqfnoDX7XuyhQjwcSABAN2Z44pveOOO04iV7Qk5NCj8ZaZXMXkzGE0525kixYtYp9++in7xS9+odymTuxNmzaxmTNnsvPOO087Nt7vHTt2LDvrrLNi+wCMlxJOvZFuypQp7Ic//CE7/vjjvbJRPDGQegZ0OnOQRQ499VUmugLF5szBlNgwBudDhgzhzrRVq1bRSQyR044NR46NW66//voQEqIntWOjkXnmmWdYnz59ogsMkdOOjYVAjz32GJ/esH/0JoQ4SkoMpIIB3c4cpJBDT0XViL+QeDVNzJlnfZjdzh5WqkP3l156id1xxx3s4IMPtl9Wei5Wy8OZd+zYkZ144olK8ezCBfbf/vY3Prwu+wU0u4yo5wL7iy++4G8HYDU9BWIgywzg1TQxZ656mN3OY+q2frUXns6jM4BX0/D932Jy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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "给出广播示意图:\n",
    "![image.png](attachment:image.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5, 6, 7])"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#第一幅图\n",
    "np.arange(3)+5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1., 1., 1.],\n",
       "       [1., 1., 1.],\n",
       "       [1., 1., 1.]])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "array([0, 1, 2])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 第二幅图\n",
    "a = np.ones((3, 3))\n",
    "b = np.arange(3)\n",
    "a\n",
    "b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1., 2., 3.],\n",
       "       [1., 2., 3.],\n",
       "       [1., 2., 3.]])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a+b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0],\n",
       "       [1],\n",
       "       [2]])"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 第三幅图\n",
    "a = np.arange(3).reshape(3, 1)\n",
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 1, 2])"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "b = np.arange(3)\n",
    "b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0, 1, 2],\n",
       "       [1, 2, 3],\n",
       "       [2, 3, 4]])"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a+b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 算术运算的相关函数"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "用于执行算术运算(如 add() ,subtract() ,multiply() 和 divide() )的输入数组必须具\n",
    "有相同的形状或符合数组广播规则。   "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "|**数学运算函数**||\n",
    "| -------------------------- | ---------------------------------------- |\n",
    "| add(x1,x2 )      | 按元素添加参数,等效于 x1 + x2           |\n",
    "| subtract(x1,x2) | 按元素方式减去参数,等效于x1 - x2        |\n",
    "| multiply(x1,x2) | 逐元素乘法参数,等效于x1 * x2            |\n",
    "| divide(x1,x2)   | 逐元素除以参数,等效于x1 / x2            |\n",
    "| exp(x)           | 计算e的x次方。     |\n",
    "| exp2(x)          | 计算2的x次方。 |\n",
    "| power(x1,x2)     | 计算x1的x2次幂。                      |\n",
    "| mod(x)             | 返回输入数组中相应元素的除法余数.       |\n",
    "| log(x)           | 自然对数,逐元素。                       |\n",
    "| log2(x)          | *x*的基础2对数。                         |\n",
    "| log10(x)         | 以元素为单位返回输入数组的基数10的对数。 |\n",
    "| expm1(x)         | 对数组中的所有元素计算`exp(x) - 1`     |\n",
    "| log1p(x)         | 返回一个加自然对数的输入数组。     |\n",
    "| sqrt(x)          | 按元素方式返回数组的正平方根。           |\n",
    "| square(x)        | 返回输入的元素平方。                     |\n",
    "| sin(x)           | 三角正弦。                               |\n",
    "| cos(x)           | 元素余弦。                               |\n",
    "| tan(x)           | 逐元素计算切线。 |\n",
    "| around(x)           | 四舍五入到所需精度的值。decimals 表示要舍入的小数位 |\n",
    "| floor(x)            | 向下取整 |\n",
    "| ceil()           | 向上取整 |"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0., 1., 2.],\n",
       "       [3., 4., 5.],\n",
       "       [6., 7., 8.]])"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "array([10, 11, 12])"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = np.arange(9, dtype = np.float_).reshape(3,3)\n",
    "b = np.array([10,11,12])\n",
    "a\n",
    "b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[10., 12., 14.],\n",
       "       [13., 15., 17.],\n",
       "       [16., 18., 20.]])"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "array([[10., 12., 14.],\n",
       "       [13., 15., 17.],\n",
       "       [16., 18., 20.]])"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#执行数组的加法\n",
    "np.add(a, b)\n",
    "a+b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-10., -10., -10.],\n",
       "       [ -7.,  -7.,  -7.],\n",
       "       [ -4.,  -4.,  -4.]])"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "array([[-10., -10., -10.],\n",
       "       [ -7.,  -7.,  -7.],\n",
       "       [ -4.,  -4.,  -4.]])"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#执行数组的减法\n",
    "np.subtract(a,b)\n",
    "a - b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0., 11., 24.],\n",
       "       [30., 44., 60.],\n",
       "       [60., 77., 96.]])"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "array([[ 0., 11., 24.],\n",
       "       [30., 44., 60.],\n",
       "       [60., 77., 96.]])"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#执行数组的位乘法\n",
    "np.multiply(a,b)\n",
    "a * b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.        , 0.09090909, 0.16666667],\n",
       "       [0.3       , 0.36363636, 0.41666667],\n",
       "       [0.6       , 0.63636364, 0.66666667]])"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "array([[0.        , 0.09090909, 0.16666667],\n",
       "       [0.3       , 0.36363636, 0.41666667],\n",
       "       [0.6       , 0.63636364, 0.66666667]])"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#执行数组的位除法\n",
    "np.divide(a,b)\n",
    "a / b"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 练习"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1,  2,  3,  4],\n",
       "       [ 5,  6,  7,  8],\n",
       "       [ 9, 10, 11, 12],\n",
       "       [13, 14, 15, 16]])"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = np.arange(1,17).reshape(4, 4)\n",
    "a"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 计算e的x次方,x是a中的每一个元素"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[2.71828183e+00, 7.38905610e+00, 2.00855369e+01, 5.45981500e+01],\n",
       "       [1.48413159e+02, 4.03428793e+02, 1.09663316e+03, 2.98095799e+03],\n",
       "       [8.10308393e+03, 2.20264658e+04, 5.98741417e+04, 1.62754791e+05],\n",
       "       [4.42413392e+05, 1.20260428e+06, 3.26901737e+06, 8.88611052e+06]])"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#计算e的x次方,x是a中的每一个元素\n",
    "np.exp(a)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 计算2的x次方,x是a中的每一个元素"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[2.0000e+00, 4.0000e+00, 8.0000e+00, 1.6000e+01],\n",
       "       [3.2000e+01, 6.4000e+01, 1.2800e+02, 2.5600e+02],\n",
       "       [5.1200e+02, 1.0240e+03, 2.0480e+03, 4.0960e+03],\n",
       "       [8.1920e+03, 1.6384e+04, 3.2768e+04, 6.5536e+04]])"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#计算2的x次方,x是a中的每一个元素\n",
    "np.exp2(a)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 对数组中的所有元素计算exp(x) - 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1.71828183e+00, 6.38905610e+00, 1.90855369e+01, 5.35981500e+01],\n",
       "       [1.47413159e+02, 4.02428793e+02, 1.09563316e+03, 2.97995799e+03],\n",
       "       [8.10208393e+03, 2.20254658e+04, 5.98731417e+04, 1.62753791e+05],\n",
       "       [4.42412392e+05, 1.20260328e+06, 3.26901637e+06, 8.88610952e+06]])"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 对数组中的所有元素计算exp(x) - 1\n",
    "np.expm1(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "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.7.4"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": true,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "325.516px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}