{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Indexing and Broadcasting in Numpy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Embedding mini-languages in Python has a long tradition. In this section of the tutorial, we will explore some examples of this practice." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The first example we will consider is so-called *broadcasting* in numpy. It may look shallow at first sight, but it and its associated operations constitute a considerable subset of the array programming language APL." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0 1 2 3]\n", "[ 0 10 20]\n" ] } ], "source": [ "a = np.arange(4)\n", "b = np.arange(3) * 10\n", "print(a)\n", "print(b)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(4, 1)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.reshape(-1, 1).shape" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[ 0, 10, 20],\n", " [ 1, 11, 21],\n", " [ 2, 12, 22],\n", " [ 3, 13, 23]])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = a.reshape(-1, 1) + b\n", "x" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 6, 46, 86])" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.sum(x, axis=0)" ] } ], "metadata": {}, "nbformat": 4, "nbformat_minor": 0 }