{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 数组方法" ] }, { "cell_type": "code", "execution_count": 1, "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": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "a = array([[1,2,3], \n", " [4,5,6]])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "求所有元素的和:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "21" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sum(a)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "指定求和的维度:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "沿着第一维求和:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([5, 7, 9])" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sum(a, axis=0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "沿着第二维求和:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 6, 15])" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sum(a, axis=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "沿着最后一维求和:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 6, 15])" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sum(a, axis=-1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "或者使用 `sum` 方法:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "21" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.sum()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([5, 7, 9])" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.sum(axis=0)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 6, 15])" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.sum(axis=-1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 求积" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "求所有元素的乘积:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "720" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.prod()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "或者使用函数形式:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 4, 10, 18])" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prod(a, axis=0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 求最大最小值" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[ 0.444, 0.06 , 0.668, 0.02 ],\n", " [ 0.793, 0.302, 0.81 , 0.381],\n", " [ 0.296, 0.182, 0.345, 0.686]])" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from numpy.random import rand\n", "a = rand(3, 4)\n", "%precision 3\n", "a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "全局最小:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.020" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.min()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "沿着某个轴的最小:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 0.296, 0.06 , 0.345, 0.02 ])" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.min(axis=0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "全局最大:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.810" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.max()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "沿着某个轴的最大:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 0.668, 0.81 , 0.686])" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.max(axis=-1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 最大最小值的位置" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "使用 `argmin, argmax` 方法:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.argmin()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([2, 0, 2, 0], dtype=int64)" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.argmin(axis=0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 均值" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "可以使用 `mean` 方法:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": true }, "outputs": [], "source": [ "a = array([[1,2,3],[4,5,6]])" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "3.500" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.mean()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 2., 5.])" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.mean(axis=-1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "也可以使用 `mean` 函数:" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "3.500" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean(a)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "还可以使用 `average` 函数:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 2.5, 3.5, 4.5])" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "average(a, axis = 0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`average` 函数还支持加权平均:" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 3., 4., 5.])" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "average(a, axis = 0, weights=[1,2])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 标准差" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "用 `std` 方法计算标准差:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 0.816, 0.816])" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.std(axis=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "用 `var` 方法计算方差:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 0.667, 0.667])" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.var(axis=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "或者使用函数:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 0.667, 0.667])" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "var(a, axis=1)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 0.816, 0.816])" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "std(a, axis=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## clip 方法" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "将数值限制在某个范围:" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[1, 2, 3],\n", " [4, 5, 6]])" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[3, 3, 3],\n", " [4, 5, 5]])" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.clip(3,5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "小于3的变成3,大于5的变成5。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ptp 方法" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "计算最大值和最小值之差:" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([2, 2])" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.ptp(axis=1)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "5" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.ptp()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## round 方法" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "近似,默认到整数:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": true }, "outputs": [], "source": [ "a = array([1.35, 2.5, 1.5])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "这里,.5的近似规则为近似到偶数值,可以参考:\n", "\n", "https://en.wikipedia.org/wiki/Rounding#Round_half_to_odd" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 1., 2., 2.])" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.round()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "近似到一位小数:" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 1.4, 2.5, 1.5])" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.round(decimals=1)" ] } ], "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.10" } }, "nbformat": 4, "nbformat_minor": 0 }