{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Read write matrix" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab --no-import-all inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## set up a random matrix" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 0.43353106 0.20119405 0.86392037 0.32404592 0.08291246 0.59166994\n", " 0.60206427 0.12748406 0.51412819 0.91065312]\n", " [ 0.40606504 0.10030935 0.34770477 0.26451174 0.12690505 0.83409554\n", " 0.18351937 0.6606988 0.22986398 0.59035432]\n", " [ 0.43802659 0.08093542 0.61796533 0.11181067 0.35010534 0.18116558\n", " 0.92906712 0.4880652 0.5330792 0.60887044]\n", " [ 0.01730932 0.33259982 0.43341601 0.8325671 0.0238194 0.28202742\n", " 0.64386667 0.96173036 0.42287681 0.71983562]\n", " [ 0.91209496 0.94745346 0.11092897 0.52060484 0.83411446 0.71373436\n", " 0.72706503 0.0597849 0.28280784 0.54419517]\n", " [ 0.08279205 0.52549851 0.73353343 0.17877879 0.1276122 0.69785561\n", " 0.28603898 0.11544235 0.21754224 0.15313346]\n", " [ 0.5963676 0.99209628 0.65830609 0.6833042 0.53988082 0.03371555\n", " 0.02230531 0.98675546 0.26948061 0.11284479]\n", " [ 0.19031027 0.05051354 0.01919686 0.67331308 0.92151899 0.13854699\n", " 0.04121859 0.68428878 0.77745517 0.98338923]\n", " [ 0.47131067 0.99289866 0.61520688 0.20562814 0.87475133 0.02509654\n", " 0.95875837 0.61730798 0.05002505 0.84926377]\n", " [ 0.20119436 0.91923225 0.18235957 0.88617741 0.23535837 0.85673974\n", " 0.64305386 0.98699058 0.94663796 0.20793874]]\n" ] } ], "source": [ "dimension = 10\n", "matrix = np.random.random(dimension * dimension).reshape(dimension, dimension)\n", "print(matrix)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## print matrix function" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 0 1 2 3\n", " 0 0.433531 0.201194 0.863920 0.324046\n", " 1 0.406065 0.100309 0.347705 0.264512\n", " 2 0.438027 0.080935 0.617965 0.111811\n", " 3 0.017309 0.332600 0.433416 0.832567\n", " 4 0.912095 0.947453 0.110929 0.520605\n", " 5 0.082792 0.525499 0.733533 0.178779\n", " 6 0.596368 0.992096 0.658306 0.683304\n", " 7 0.190310 0.050514 0.019197 0.673313\n", " 8 0.471311 0.992899 0.615207 0.205628\n", " 9 0.201194 0.919232 0.182360 0.886177\n", " 4 5 6 7\n", " 0 0.082912 0.591670 0.602064 0.127484\n", " 1 0.126905 0.834096 0.183519 0.660699\n", " 2 0.350105 0.181166 0.929067 0.488065\n", " 3 0.023819 0.282027 0.643867 0.961730\n", " 4 0.834114 0.713734 0.727065 0.059785\n", " 5 0.127612 0.697856 0.286039 0.115442\n", " 6 0.539881 0.033716 0.022305 0.986755\n", " 7 0.921519 0.138547 0.041219 0.684289\n", " 8 0.874751 0.025097 0.958758 0.617308\n", " 9 0.235358 0.856740 0.643054 0.986991\n", " 8 9\n", " 0 0.514128 0.910653\n", " 1 0.229864 0.590354\n", " 2 0.533079 0.608870\n", " 3 0.422877 0.719836\n", " 4 0.282808 0.544195\n", " 5 0.217542 0.153133\n", " 6 0.269481 0.112845\n", " 7 0.777455 0.983389\n", " 8 0.050025 0.849264\n", " 9 0.946638 0.207939\n", "\n" ] } ], "source": [ "def print_matrix(matrix, ncol=4):\n", " dimension = matrix.shape[0]\n", " j = 0\n", " out = \"\"\n", " while j < dimension:\n", " jmax = min(dimension, j + ncol)\n", " out += 5 * \" \" + \" \".join([\"%12d\" % jj for jj in range(j, jmax)]) + \"\\n\"\n", " for i in range(dimension):\n", " out += \"%5d\" % i \n", " out += \" \".join([\"%12.6f\" % matrix[i, jj] for jj in range(j, jmax)]) + \"\\n\"\n", " j += ncol\n", " return out\n", "\n", "out = print_matrix(matrix)\n", "print(out)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "with open(\"matrix.dat\", \"w\") as f:\n", " f.write(\"A title and blank lines\\n\\n\\n\")\n", " f.write(\"$matrix\\n\")\n", " f.write(\"%d\\n\" % dimension)\n", " f.write(\"\\n\")\n", " f.write(out)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "A title and blank lines\r\n", "\r\n", "\r\n", "$matrix\r\n", "10\r\n", "\r\n", " 0 1 2 3\r\n", " 0 0.433531 0.201194 0.863920 0.324046\r\n", " 1 0.406065 0.100309 0.347705 0.264512\r\n", " 2 0.438027 0.080935 0.617965 0.111811\r\n", " 3 0.017309 0.332600 0.433416 0.832567\r\n", " 4 0.912095 0.947453 0.110929 0.520605\r\n", " 5 0.082792 0.525499 0.733533 0.178779\r\n", " 6 0.596368 0.992096 0.658306 0.683304\r\n", " 7 0.190310 0.050514 0.019197 0.673313\r\n", " 8 0.471311 0.992899 0.615207 0.205628\r\n", " 9 0.201194 0.919232 0.182360 0.886177\r\n", " 4 5 6 7\r\n", " 0 0.082912 0.591670 0.602064 0.127484\r\n", " 1 0.126905 0.834096 0.183519 0.660699\r\n", " 2 0.350105 0.181166 0.929067 0.488065\r\n", " 3 0.023819 0.282027 0.643867 0.961730\r\n", " 4 0.834114 0.713734 0.727065 0.059785\r\n", " 5 0.127612 0.697856 0.286039 0.115442\r\n", " 6 0.539881 0.033716 0.022305 0.986755\r\n", " 7 0.921519 0.138547 0.041219 0.684289\r\n", " 8 0.874751 0.025097 0.958758 0.617308\r\n", " 9 0.235358 0.856740 0.643054 0.986991\r\n", " 8 9\r\n", " 0 0.514128 0.910653\r\n", " 1 0.229864 0.590354\r\n", " 2 0.533079 0.608870\r\n", " 3 0.422877 0.719836\r\n", " 4 0.282808 0.544195\r\n", " 5 0.217542 0.153133\r\n", " 6 0.269481 0.112845\r\n", " 7 0.777455 0.983389\r\n", " 8 0.050025 0.849264\r\n", " 9 0.946638 0.207939\r\n" ] } ], "source": [ "cat matrix.dat" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Read the matrix" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "A title and blank lines\n", "\n", "\n", "$matrix\n", "10\n", "\n", "0 1 2 3\n" ] } ], "source": [ "with open(\"matrix.dat\", \"r\") as f:\n", " for i in range(7):\n", " line = f.readline()\n", " print(line.strip())" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "$matrix\n", "\n" ] } ], "source": [ "with open(\"matrix.dat\", \"r\") as f:\n", " [f.readline() for i in range(3)]\n", " line = f.readline()\n", " print(line)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dimension : 10\n", " 0 1 2 3\n", " 0 0.433531 0.201194 0.863920 0.324046\n", " 1 0.406065 0.100309 0.347705 0.264512\n", " 2 0.438027 0.080935 0.617965 0.111811\n", " 3 0.017309 0.332600 0.433416 0.832567\n", " 4 0.912095 0.947453 0.110929 0.520605\n", " 5 0.082792 0.525499 0.733533 0.178779\n", " 6 0.596368 0.992096 0.658306 0.683304\n", " 7 0.190310 0.050514 0.019197 0.673313\n", " 8 0.471311 0.992899 0.615207 0.205628\n", " 9 0.201194 0.919232 0.182360 0.886177\n", " 4 5 6 7\n", " 0 0.082912 0.591670 0.602064 0.127484\n", " 1 0.126905 0.834096 0.183519 0.660699\n", " 2 0.350105 0.181166 0.929067 0.488065\n", " 3 0.023819 0.282027 0.643867 0.961730\n", " 4 0.834114 0.713734 0.727065 0.059785\n", " 5 0.127612 0.697856 0.286039 0.115442\n", " 6 0.539881 0.033716 0.022305 0.986755\n", " 7 0.921519 0.138547 0.041219 0.684289\n", " 8 0.874751 0.025097 0.958758 0.617308\n", " 9 0.235358 0.856740 0.643054 0.986991\n", " 8 9\n", " 0 0.514128 0.910653\n", " 1 0.229864 0.590354\n", " 2 0.533079 0.608870\n", " 3 0.422877 0.719836\n", " 4 0.282808 0.544195\n", " 5 0.217542 0.153133\n", " 6 0.269481 0.112845\n", " 7 0.777455 0.983389\n", " 8 0.050025 0.849264\n", " 9 0.946638 0.207939\n", "\n" ] } ], "source": [ "def read_matrix(filename):\n", " with open(filename, \"r\") as f:\n", " # read dimension\n", " dimension = None\n", " while not dimension:\n", " line = f.readline()\n", " if \"$matrix\" in line:\n", " dimension = int(f.readline())\n", " print(\"dimension :\", dimension)\n", " # allocate matrix\n", " matrix = np.zeros((dimension, dimension))\n", " # read the blanck line\n", " f.readline()\n", " # read the matrix\n", " while line != \"\":\n", " line = f.readline()\n", " jindex = [int(jj) for jj in line.split()]\n", " for i in range(dimension):\n", " line = f.readline()\n", " data = [float(val) for val in line.split()[1:]]\n", " for k, val in enumerate(data):\n", " matrix[i, jindex[k]] = val \n", " return matrix\n", "\n", "rmatrix = read_matrix(\"matrix.dat\")\n", "out = print_matrix(rmatrix)\n", "print(out)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## `next` or `readline`\n", "\n", "Try to mix `next()` or `f.readline()` method." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false, "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "line 1 A title and blank lines\n", "line 2 0 1 2 3\n", "------------------------------------------------------------\n", "0 0.433531 0.201194 0.863920 0.324046\n", "1 0.406065 0.100309 0.347705 0.264512\n", "2 0.438027 0.080935 0.617965 0.111811\n", "3 0.017309 0.332600 0.433416 0.832567\n", "4 0.912095 0.947453 0.110929 0.520605\n", "------------------------------------------------------------\n", "5 0.082792 0.525499 0.733533 0.178779\n", "6 0.596368 0.992096 0.658306 0.683304\n", "7 0.190310 0.050514 0.019197 0.673313\n", "8 0.471311 0.992899 0.615207 0.205628\n", "9 0.201194 0.919232 0.182360 0.886177\n", "4 5 6 7\n" ] } ], "source": [ "with open(\"matrix.dat\", \"r\") as f:\n", " line = next(f)\n", " print(\"line 1\", line.strip())\n", " \n", " [next(f) for i in range(5)]\n", "\n", " line = next(f)\n", " \n", " print(\"line 2\", line.strip())\n", " print(10*\"------\")\n", " \n", " i = 0\n", " for line in f:\n", " i += 1\n", " print(line.strip())\n", " if i == 5:\n", " break\n", " \n", " print(10*\"------\")\n", " \n", " i = 0\n", " while i < 6:\n", " i += 1\n", " line = f.readline()\n", " print(line.strip())" ] } ], "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.5.1" } }, "nbformat": 4, "nbformat_minor": 0 }