{ "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对象的属性\" data-toc-modified-id=\"ndarray对象的属性-1\"><span class=\"toc-item-num\">1 </span>ndarray对象的属性</a></span><ul class=\"toc-item\"><li><span><a href=\"#数组的形状ndarray.shape\" data-toc-modified-id=\"数组的形状ndarray.shape-1.1\"><span class=\"toc-item-num\">1.1 </span>数组的形状ndarray.shape</a></span></li><li><span><a href=\"#数组的维度ndarray.ndim\" data-toc-modified-id=\"数组的维度ndarray.ndim-1.2\"><span class=\"toc-item-num\">1.2 </span>数组的维度ndarray.ndim</a></span></li><li><span><a href=\"#查看数组中的元素个数ndarray.size\" data-toc-modified-id=\"查看数组中的元素个数ndarray.size-1.3\"><span class=\"toc-item-num\">1.3 </span>查看数组中的元素个数ndarray.size</a></span></li><li><span><a href=\"#查看数组中的元素的数据类型ndarray.dtype\" data-toc-modified-id=\"查看数组中的元素的数据类型ndarray.dtype-1.4\"><span class=\"toc-item-num\">1.4 </span>查看数组中的元素的数据类型ndarray.dtype</a></span></li><li><span><a href=\"#查看数组中每个元素所占的内存字节数ndarray.itemsize\" data-toc-modified-id=\"查看数组中每个元素所占的内存字节数ndarray.itemsize-1.5\"><span class=\"toc-item-num\">1.5 </span>查看数组中每个元素所占的内存字节数ndarray.itemsize</a></span></li></ul></li><li><span><a href=\"#ndarray对象的方法一维度变换\" data-toc-modified-id=\"ndarray对象的方法一维度变换-2\"><span class=\"toc-item-num\">2 </span>ndarray对象的方法一维度变换</a></span><ul class=\"toc-item\"><li><span><a href=\"#改变数组的形状ndarray.reshape(不改变原数组)\" data-toc-modified-id=\"改变数组的形状ndarray.reshape(不改变原数组)-2.1\"><span class=\"toc-item-num\">2.1 </span>改变数组的形状ndarray.reshape(不改变原数组)</a></span></li><li><span><a href=\"#改变数组的形状ndarray.resize(改变原数组)\" data-toc-modified-id=\"改变数组的形状ndarray.resize(改变原数组)-2.2\"><span class=\"toc-item-num\">2.2 </span>改变数组的形状ndarray.resize(改变原数组)</a></span></li><li><span><a href=\"#返回一个一维数组\" data-toc-modified-id=\"返回一个一维数组-2.3\"><span class=\"toc-item-num\">2.3 </span>返回一个一维数组</a></span><ul class=\"toc-item\"><li><span><a href=\"#ndarray.flatten\" data-toc-modified-id=\"ndarray.flatten-2.3.1\"><span class=\"toc-item-num\">2.3.1 </span>ndarray.flatten</a></span></li><li><span><a href=\"#np.ravel()\" data-toc-modified-id=\"np.ravel()-2.3.2\"><span class=\"toc-item-num\">2.3.2 </span>np.ravel()</a></span></li><li><span><a href=\"#通过reshape改变形状\" data-toc-modified-id=\"通过reshape改变形状-2.3.3\"><span class=\"toc-item-num\">2.3.3 </span>通过reshape改变形状</a></span></li></ul></li></ul></li><li><span><a href=\"#ndarray对象的方法—数组转列表ndarray.tolist\" data-toc-modified-id=\"ndarray对象的方法—数组转列表ndarray.tolist-3\"><span class=\"toc-item-num\">3 </span>ndarray对象的方法—数组转列表ndarray.tolist</a></span></li><li><span><a href=\"#ndarray的索引与切片\" data-toc-modified-id=\"ndarray的索引与切片-4\"><span class=\"toc-item-num\">4 </span>ndarray的索引与切片</a></span><ul class=\"toc-item\"><li><span><a href=\"#一维ndarray的索引与切片\" data-toc-modified-id=\"一维ndarray的索引与切片-4.1\"><span class=\"toc-item-num\">4.1 </span>一维ndarray的索引与切片</a></span></li><li><span><a href=\"#多维ndarray的索引与切片\" data-toc-modified-id=\"多维ndarray的索引与切片-4.2\"><span class=\"toc-item-num\">4.2 </span>多维ndarray的索引与切片</a></span></li><li><span><a href=\"#布尔索引\" data-toc-modified-id=\"布尔索引-4.3\"><span class=\"toc-item-num\">4.3 </span>布尔索引</a></span></li></ul></li></ul></div>" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ " import numpy as np" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "#全部行都能输出\n", "from IPython.core.interactiveshell import InteractiveShell\n", "InteractiveShell.ast_node_interactivity = \"all\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# ndarray对象的属性" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "#为了确保大家都能生成一样的数组, 我们先设置随机数种子\n", "np.random.seed(123)\n", "x1 = np.random.randint(1,10, size=6) # 一维数组\n", "x2 = np.random.randint(1,10, size=(3, 4)) # 二维数组\n", "x3 = np.random.randint(1,10, size=(3, 4, 5)) # 三维数组" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([3, 3, 7, 2, 4, 7])" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "array([[2, 1, 2, 1],\n", " [1, 4, 5, 1],\n", " [1, 5, 2, 8]])" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "array([[[4, 3, 5, 8, 3],\n", " [5, 9, 1, 8, 4],\n", " [5, 7, 2, 6, 7],\n", " [3, 2, 9, 4, 6]],\n", "\n", " [[1, 3, 7, 3, 5],\n", " [5, 7, 4, 1, 7],\n", " [5, 8, 7, 8, 2],\n", " [6, 8, 3, 5, 9]],\n", "\n", " [[2, 3, 2, 2, 4],\n", " [6, 1, 9, 2, 7],\n", " [4, 4, 6, 8, 3],\n", " [4, 4, 4, 9, 7]]])" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x1\n", "x2\n", "x3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 数组的形状ndarray.shape" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(6,)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "(3, 4)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "(3, 4, 5)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#查看数据的形状\n", "x1.shape\n", "x2.shape\n", "x3.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 数组的维度ndarray.ndim" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "2" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "3" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x1.ndim\n", "x2.ndim\n", "x3.ndim" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 查看数组中的元素个数ndarray.size" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "6" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "12" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "60" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x1.size\n", "x2.size\n", "x3.size" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 查看数组中的元素的数据类型ndarray.dtype" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dtype('int32')" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "dtype('int32')" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "dtype('int32')" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x1.dtype\n", "x2.dtype\n", "x3.dtype" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 查看数组中每个元素所占的内存字节数ndarray.itemsize" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "4" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "4" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x1.itemsize\n", "x2.itemsize\n", "x3.itemsize" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 数组的 dtype 为 int8(一个字节)\n", "x = np.array([1,2,3,4,5], dtype = np.int8)\n", "x.itemsize" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "8" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = np.array([1,2,3,4,5], dtype = np.float64)\n", "x.itemsize" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# ndarray对象的方法一维度变换" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[[10, 88, 15, 84],\n", " [71, 13, 55, 28],\n", " [39, 18, 62, 75]],\n", "\n", " [[66, 48, 17, 6],\n", " [87, 47, 16, 60],\n", " [41, 26, 46, 50]]])" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m = np.random.randint(1, 100,(2, 3, 4))\n", "m" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 改变数组的形状ndarray.reshape(不改变原数组)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 1, 36, 30, 2, 84, 69, 31, 8],\n", " [94, 61, 66, 77, 68, 45, 52, 8],\n", " [89, 71, 14, 29, 64, 85, 37, 97]])" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m.reshape(3,8) #不改变原数组,会返回新的数组" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2, 3, 4)" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m.shape" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "ename": "ValueError", "evalue": "cannot reshape array of size 24 into shape (3,7)", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m<ipython-input-19-e3effb8f525e>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mm\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreshape\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m7\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;31m#注意这点,要保证reshape前后数组中的元素是一样的\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;31mValueError\u001b[0m: cannot reshape array of size 24 into shape (3,7)" ] } ], "source": [ "m.reshape(3,7) #注意这点,要保证reshape前后数组中的元素是一样的" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 改变数组的形状ndarray.resize(改变原数组)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[[41, 89, 64, 59],\n", " [78, 9, 79, 7],\n", " [66, 95, 71, 41]],\n", "\n", " [[75, 77, 77, 26],\n", " [ 8, 14, 45, 2],\n", " [42, 79, 57, 88]]])" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m = np.random.randint(1, 100,(2, 3, 4))\n", "m" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "m.resize(4,6) #改变原数组" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[41, 89, 64, 59, 78, 9],\n", " [79, 7, 66, 95, 71, 41],\n", " [75, 77, 77, 26, 8, 14],\n", " [45, 2, 42, 79, 57, 88]])" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m " ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(4, 6)" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m.shape" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2, 3, 4)" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 返回一个一维数组" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### ndarray.flatten" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[[ 6, 82, 36, 78],\n", " [26, 98, 94, 71],\n", " [59, 30, 82, 22]],\n", "\n", " [[17, 31, 56, 81],\n", " [31, 13, 91, 84],\n", " [17, 93, 39, 99]]])" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m = np.random.randint(1, 100,(2, 3, 4))\n", "m" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 6, 82, 36, 78, 26, 98, 94, 71, 59, 30, 82, 22, 17, 31, 56, 81, 31,\n", " 13, 91, 84, 17, 93, 39, 99])" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n = m.flatten() #不改变原数组\n", "n " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### np.ravel()" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[[ 6, 82, 36, 78],\n", " [26, 98, 94, 71],\n", " [59, 30, 82, 22]],\n", "\n", " [[17, 31, 56, 81],\n", " [31, 13, 91, 84],\n", " [17, 93, 39, 99]]])" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 6, 82, 36, 78, 26, 98, 94, 71, 59, 30, 82, 22, 17, 31, 56, 81, 31,\n", " 13, 91, 84, 17, 93, 39, 99])" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m.ravel()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[[36, 59, 39, 2],\n", " [53, 18, 46, 23],\n", " [54, 90, 75, 1]],\n", "\n", " [[36, 84, 95, 72],\n", " [40, 88, 84, 79],\n", " [30, 20, 38, 2]]])" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 通过reshape改变形状" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 6, 82, 36, 78, 26, 98, 94, 71, 59, 30, 82, 22, 17, 31, 56, 81,\n", " 31, 13, 91, 84, 17, 93, 39, 99]])" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m.reshape(1,-1)" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 6],\n", " [82],\n", " [36],\n", " [78],\n", " [26],\n", " [98],\n", " [94],\n", " [71],\n", " [59],\n", " [30],\n", " [82],\n", " [22],\n", " [17],\n", " [31],\n", " [56],\n", " [81],\n", " [31],\n", " [13],\n", " [91],\n", " [84],\n", " [17],\n", " [93],\n", " [39],\n", " [99]])" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m.reshape(-1,1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "这种改变的就是原数组的形状而已" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# ndarray对象的方法—数组转列表ndarray.tolist" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "有时候我们需要把把数组转化为列表来处理数据,因为列表有很多方法" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "之前我们有学过ndarray.astype()用来修改数组元素的数据类型" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "也知道怎么把列表 元组变成数组,反过来我再学一个怎么把ndarray变成列表" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1, 2, 3, 4, 5, 6, 7, 8])" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = np.array([1, 2, 3, 4, 5, 6, 7, 8]) #列表变数组\n", "a" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 4, 5, 6, 7, 8]" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b = a.tolist() #不会改变原数组,重新返回一个新生成的列表\n", "b" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1, 2, 3, 4, 5, 6, 7, 8])" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# ndarray的索引与切片" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**和字符串 列表 元祖基本上是一样的** \n", "[开始位置, 终止位置, 步长和方向]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 一维ndarray的索引与切片" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = np.arange(5,16)\n", "a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**索引单个元素**" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "6" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[1]" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "15" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[-1]" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "14" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[-2]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**多个元素的连续索引**" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([5, 6, 7])" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[0:3]" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 8, 9, 10, 11, 12])" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[3:8]" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([10, 11, 12, 13, 14, 15])" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[5:]" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([10, 11, 12, 13, 14])" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[5:-1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**间隔索引**" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([5, 7, 9])" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[0:6:2]" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 5, 9, 13])" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[0::4]" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([15, 13, 11, 9, 7, 5])" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[::-2]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 多维ndarray的索引与切片" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1, 2, 3],\n", " [4, 5, 6],\n", " [7, 8, 9]])" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = np.array([[1, 2, 3], [4, 5, 6,], [7, 8, 9]])\n", "a" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1, 2, 3])" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[0]" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1, 2, 3],\n", " [4, 5, 6]])" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[0:2]" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[0][1]" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([7, 8, 9])" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[2][:]" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1, 2, 3],\n", " [4, 5, 6],\n", " [7, 8, 9]])" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1, 4])" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[0:2,0] #[行,列]" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1, 2, 3],\n", " [4, 5, 6],\n", " [7, 8, 9]])" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[:,:]" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([2, 5, 8])" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[:,1]" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ True, True, True])" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[1]==a[1,:]" ] }, { "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": [ "当结果对象是布尔运算(例如比较运算符)的结果时,将使用此类型的高级索引。" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0, 1, 2],\n", " [ 3, 4, 5],\n", " [ 6, 7, 8],\n", " [ 9, 10, 11]])" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = np.arange(12).reshape(4,3)\n", "x" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[False, False, False],\n", " [False, False, False],\n", " [ True, True, True],\n", " [ True, True, True]])" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x>5" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 6, 7, 8, 9, 10, 11])" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x[x>5]" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([nan, 1., 2., nan, 3., 4., 5.])" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = np.array([np.nan,1,2,np.nan,3,4,5])\n", "a" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ True, False, False, True, False, False, False])" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.isnan(a)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([nan, nan])" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[np.isnan(a)]" ] }, { "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": "523.537px", "left": "0px", "top": "110.284px", "width": "269.813px" }, "toc_section_display": true, "toc_window_display": true }, "toc-autonumbering": true }, "nbformat": 4, "nbformat_minor": 2 }