{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Numpy 简介" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 导入numpy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Numpy**是**Python**的一个很重要的第三方库,很多其他科学计算的第三方库都是以**Numpy**为基础建立的。\n", "\n", "**Numpy**的一个重要特性是它的数组计算。\n", "\n", "在使用**Numpy**之前,我们需要导入`numpy`包:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from numpy import *" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "使用前一定要先导入 Numpy 包,导入的方法有以下几种:\n", "\n", "```python \n", " import numpy\n", " import numpy as np\n", " from numpy import *\n", " from numpy import array, sin\n", "```\n", "\n", "事实上,在**ipython**中可以使用magic命令来快速导入**Numpy**的内容。" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Using matplotlib backend: Qt4Agg\n", "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 数组上的数学操作" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "假如我们想将列表中的每个元素增加`1`,但列表不支持这样的操作(报错):" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "ename": "TypeError", "evalue": "can only concatenate list (not \"int\") to list", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0ma\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m3\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m4\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0ma\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;31mTypeError\u001b[0m: can only concatenate list (not \"int\") to list" ] } ], "source": [ "a = [1, 2, 3, 4]\n", "a + 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "转成 `array` :" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([1, 2, 3, 4])" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = array(a)\n", "a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`array` 数组支持每个元素加 `1` 这样的操作:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([2, 3, 4, 5])" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a + 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "与另一个 `array` 相加,得到对应元素相加的结果:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([3, 5, 7, 9])" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b = array([2, 3, 4, 5])\n", "a + b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "对应元素相乘:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 2, 6, 12, 20])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a * b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "对应元素乘方:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 1, 8, 81, 1024])" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a ** b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 提取数组中的元素" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "提取第一个元素:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "提取前两个元素:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([1, 2])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[:2]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "最后两个元素:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([3, 4])" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[-2:]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "将它们相加:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([4, 6])" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[:2] + a[-2:]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 修改数组形状" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "查看 `array` 的形状:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(4L,)" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "修改 `array` 的形状:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[1, 2],\n", " [3, 4]])" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.shape = 2,2\n", "a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 多维数组" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`a` 现在变成了一个二维的数组,可以进行加法:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "array([[2, 4],\n", " [6, 8]])" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a + a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "乘法仍然是对应元素的乘积,并不是按照矩阵乘法来计算:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[ 1, 4],\n", " [ 9, 16]])" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a * a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 画图" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "linspace 用来生成一组等间隔的数据:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 0. , 0.314, 0.628, 0.942, 1.257, 1.571, 1.885, 2.199,\n", " 2.513, 2.827, 3.142, 3.456, 3.77 , 4.084, 4.398, 4.712,\n", " 5.027, 5.341, 5.655, 5.969, 6.283])" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = linspace(0, 2*pi, 21)\n", "%precision 3\n", "a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "三角函数:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 0.000e+00, 3.090e-01, 5.878e-01, 8.090e-01, 9.511e-01,\n", " 1.000e+00, 9.511e-01, 8.090e-01, 5.878e-01, 3.090e-01,\n", " 1.225e-16, -3.090e-01, -5.878e-01, -8.090e-01, -9.511e-01,\n", " -1.000e+00, -9.511e-01, -8.090e-01, -5.878e-01, -3.090e-01,\n", " -2.449e-16])" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b = sin(a)\n", "b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "画出图像:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nHzC+mVy4trE1AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "plot(a, b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 从数组中选择元素" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "假设我们想选取数组b中所有非负的部分,首先可以利用 `b` 产生一组布尔值:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ True, True, True, True, True, True, True, True, True,\n", " True, True, False, False, False, False, False, False, False,\n", " False, False, False], dtype=bool)" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b >= 0" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": true }, "outputs": [], "source": [ "mask = b >= 0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "画出所有对应的非负值对应的点:" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(a[mask], b[mask], 'ro')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.11" } }, "nbformat": 4, "nbformat_minor": 0 }