{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Copy\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import numpy as np\n\n\na = np.array([[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "No new object is created!\n\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "b = a\nb is a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "unique identifier of an object\n\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def f(x):\n print(id(x))\n\nid(a)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "f(a)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**View and shallow copy**\n\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "c = a.view()\nc is a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "c is a view of the data owned by a\n\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "c.base is a" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "c.flags.owndata" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "shape of a doesn't change\n\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "c = c.reshape((2, 6))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "a's data changes\n\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "c[0, 4] = 1234\na" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Slicing an array returns a view of it\n\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "s = a[:, 1:3]\ns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Deep copy**\n\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "d = a.copy()\nd is a" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "d.base is a" ] } ], "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.8.10" } }, "nbformat": 4, "nbformat_minor": 0 }