{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 全0、1数组的生成"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0, 0, 0],\n",
       "       [0, 0, 0]])"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 生成全0数组\n",
    "np.zeros((6,6,6))\n",
    "# 生成全1数组\n",
    "np.ones((6,6,6))\n",
    "\n",
    "a = np.array([[1,2,3],[4,5,6]])\n",
    "# 生成和a形状一样的全0、1数组\n",
    "np.ones_like(a)\n",
    "np.zeros_like(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 2, 3],\n",
       "       [4, 5, 6]])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##  从现有数组生成"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "b = np.array(a)  # 复制的形式生成新数组\n",
    "c = np.asarray(a) # 引用的形式生成新的数组\n",
    "\n",
    "a[0] = 10  # 修改a的值\n",
    "temp = np.zeros((2,3), dtype=np.int64)\n",
    "\n",
    "temp.dtype\n",
    "\n",
    "temp"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 生成固定范围的数组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10.])"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.linspace(1, 10, 10)  # 从指定范围内等间隔取指定数量的元素"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 3, 5, 7, 9])"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.arange(1, 11, 2) # 从指定范围内从开始值按照指定步长取数，一直到结束值为止（不包括结束值）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([   2.,    4.,    8.,   16.,   32.,   64.,  128.,  256.,  512.,\n",
       "       1024.])"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.logspace(1, 10, 10, base=2)  # 生成等比数列 base：等比数列的比例"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##  生成随机数组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[[0.73559078, 0.30589123, 0.32568083, 0.14014809],\n",
       "        [0.76796653, 0.99066091, 0.20332346, 0.62377113],\n",
       "        [0.73640678, 0.92920281, 0.53587389, 0.43354196]],\n",
       "\n",
       "       [[0.82598753, 0.90088117, 0.20160621, 0.33523865],\n",
       "        [0.6718942 , 0.1686006 , 0.58619419, 0.86310583],\n",
       "        [0.61579575, 0.84663156, 0.14980755, 0.16868134]]])"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 均匀抽样生成随机数组\n",
    "np.random.rand(2,3,4)  \n",
    "\n",
    "np.random.uniform(1, 10, (2,3))\n",
    "\n",
    "np.random.randint(1, 10, (2,3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.15284906,  0.01163405,  1.49868393],\n",
       "       [-0.94222366, -0.1884333 ,  0.71855256]])"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 正态分布抽样生成随机数组\n",
    "np.random.randn(2,3) # 标准正态分布抽样\n",
    "\n",
    "np.random.normal(loc=1, scale=1, size=(2,3))  # loc 平均值，scale方差\n",
    "\n",
    "np.random.standard_normal((2,3)) # 标准正态分布抽样"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 绘制直方图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 绘制均匀分布抽样生成的数据的直方图\n",
    "x = np.random.uniform(-10, 10, 10000000)\n",
    "\n",
    "# 创建画布\n",
    "plt.figure(figsize=(20,8))\n",
    "\n",
    "# 绘制图像\n",
    "plt.hist(x, bins=1000)\n",
    "\n",
    "# 显示图像\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘制正态分布抽样生成的数据的直方图\n",
    "x_n = np.random.standard_normal((10000000,))\n",
    "\n",
    "# 创建画布\n",
    "plt.figure(figsize=(20,8))\n",
    "\n",
    "# 绘制图像\n",
    "plt.hist(x_n, bins=1000)\n",
    "\n",
    "# 显示图像\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 案例：随机生成8只股票1周的交易日涨幅数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 随机生成一个8行5列的数组\n",
    "stock_change = np.random.standard_normal((8,5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.18034193,  0.64992488, -2.27651322, -0.88154253,  1.57039639],\n",
       "       [ 0.27126575, -0.31724391,  0.73567801,  1.78337018,  0.45531185],\n",
       "       [-0.27526832,  0.86168297,  1.27118251, -0.42667843,  1.19810533],\n",
       "       [-0.73357899,  0.69226277,  0.72346543, -1.41870678,  0.6872338 ],\n",
       "       [-0.74016654, -0.08659411,  0.97317518, -0.5460637 , -0.78570216],\n",
       "       [-1.59761172, -0.47689587,  2.69494497, -1.25192604,  0.27408855],\n",
       "       [ 0.62655477, -1.55080165, -0.12133895, -1.26714644, -0.55410163],\n",
       "       [-1.06529991, -1.5404814 ,  1.34970882, -0.88888001, -0.29144208]])"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_change"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[10.        ,  0.64992488, -2.27651322, -0.88154253,  1.57039639],\n",
       "       [-0.27526832,  0.86168297,  1.27118251, -0.42667843,  1.19810533]])"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 切片的方法，每个维度用冒号索引进行切片，有多少个维度，就传多少个冒号索引\n",
    "stock_change[:4:2,:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 形状修改\n",
    "temp = np.linspace(1,12, 12)\n",
    "\n",
    "res = temp.reshape((3,4))  # 生成新的数组，不修改原数组\n",
    "\n",
    "temp.resize((3,4))  # 修改原数组\n",
    "\n",
    "# 转置  行列互换\n",
    "temp.T"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 类型修改"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 修改dtype\n",
    "res = temp.astype(np.int64)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 把ndarray对象序列化\n",
    "s = temp.tostring()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.,  2.,  3.,  4.],\n",
       "       [ 5.,  6.,  7.,  8.],\n",
       "       [ 9., 10., 11., 12.]])"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 把序列化数据转为ndarray对象\n",
    "np.frombuffer(s, dtype=np.float64).reshape((3,4))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数组去重\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [],
   "source": [
    "temp = np.array([[1, 2, 3, 4],[3, 4, 5, 6]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 2, 3, 4],\n",
       "       [3, 4, 5, 6]])"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "temp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 2, 3, 4, 5, 6])"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 剔除数组中重复的元素，以一维数组的形式返回结果\n",
    "np.unique(temp)"
   ]
  },
  {
   "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.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
