{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "source": [ "# MatRepr\n", "\n", "Render sparse and dense matrices to HTML and Latex, with a Jupyter extension." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2023-09-12T03:27:08.569908Z", "start_time": "2023-09-12T03:27:08.562850Z" }, "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "import scipy.sparse\n", "import numpy as np\n", "np.random.seed(123)\n", "\n", "# so matrepr can be imported from the source tree.\n", "import sys\n", "sys.path.insert(0, '..')\n", "\n", "from matrepr import mdisplay, mprint" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "source": [ "### Load MatRepr Jupyter extension" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2023-09-12T03:27:08.571818Z", "start_time": "2023-09-12T03:27:08.566180Z" }, "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "%load_ext matrepr" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "source": [ "## SciPy sparse matrix" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2023-09-12T03:27:08.627283Z", "start_time": "2023-09-12T03:27:08.570110Z" }, "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
6×6, 18 'float64' elements, coo
012345
00.6110.43370.43090.4264
10.31230.3230.0921
20.72240.50180.2937
30.4258
40.6240.9442
50.22830.36180.6310.89340.4937
\n", "
" ], "text/plain": [ "<6x6 sparse matrix of type ''\n", "\twith 18 stored elements in COOrdinate format>" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scipy.sparse.random(6, 6, density=0.5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2D NumPy array" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
10×10, 100 'float64' elements, array
0123456789
00.120.320.410.870.250.480.990.520.610.12
10.830.600.550.340.300.420.680.880.510.67
20.590.620.670.840.080.760.240.190.570.10
30.890.630.720.020.590.560.160.150.700.32
40.690.550.390.930.840.360.040.300.400.70
51.000.360.760.590.690.150.400.240.340.51
60.670.110.130.320.660.850.550.850.380.32
70.350.170.830.340.550.580.520.000.990.91
80.210.290.520.900.980.260.560.810.390.73
90.160.600.870.980.080.430.200.450.550.09
\n", "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mat = np.random.random((10, 10))\n", "mdisplay(mat, floatfmt=\".2f\")" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
500×25, 12500 'float64' elements, array
0123456789101112131415161718192021222324
00.300.930.570.460.750.740.050.710.840.170.780.290.310.670.110.660.890.700.440.440.770.570.080.580.81
10.340.930.750.570.750.080.860.820.910.130.080.140.400.420.560.120.200.810.470.810.010.550.930.580.21
20.720.380.670.030.640.030.740.470.120.540.070.651.000.770.570.100.700.660.050.790.520.430.790.410.48
30.180.320.850.190.420.990.240.920.920.090.460.500.310.050.240.100.240.810.890.040.300.980.540.630.01
40.480.990.380.100.460.960.340.800.800.210.440.720.410.190.970.650.870.030.270.500.070.990.240.370.21
50.110.230.300.630.280.360.010.370.530.160.600.290.630.030.890.020.130.780.050.710.970.870.710.960.43
60.870.360.930.150.940.830.850.120.600.020.720.010.080.230.880.360.540.570.230.570.660.300.420.450.93
4930.210.030.820.020.410.690.870.630.340.320.190.330.090.990.750.720.190.150.660.590.770.930.560.680.63
4940.710.820.710.600.610.620.700.820.050.460.310.280.360.010.520.690.260.570.050.460.660.620.370.610.14
4950.620.210.610.300.660.290.670.240.090.410.960.800.210.790.100.180.160.990.960.570.560.430.910.090.36
4960.610.910.760.410.810.580.540.150.150.080.430.510.250.920.100.660.610.460.870.740.340.260.800.130.75
4970.210.260.870.690.470.020.150.310.370.460.070.100.070.150.950.120.140.150.730.330.720.440.040.670.11
4980.470.390.520.490.710.580.140.980.350.830.180.030.930.870.980.080.740.360.700.060.890.520.500.150.95
4990.030.320.400.760.430.120.920.490.230.230.290.330.230.570.230.480.410.540.050.340.920.850.700.360.52
\n", "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mat = np.random.random((500, 25))\n", "mdisplay(mat, floatfmt=\".2f\", max_rows=15, max_cols=25)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "source": [ "## 2D NumPy array with row and column labels" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2023-09-12T03:27:08.648723Z", "start_time": "2023-09-12T03:27:08.623744Z" }, "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
BostonBuffaloChicagoClevelandDallasDenver
Boston--45798363918151991
Buffalo457--53619213871561
Chicago983536--3449311050
Cleveland639192344--12051369
Dallas181513879311205--801
Denver1991156110501369801--
\n", "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cities = [\"Boston\", \"Buffalo\", \"Chicago\", \"Cleveland\", \"Dallas\", \"Denver\"]\n", "distances = np.array([\n", " [None, 457, 983, 639, 1815, 1991],\n", " [457, None, 536, 192, 1387, 1561],\n", " [983, 536, None, 344, 931, 1050],\n", " [639, 192, 344, None, 1205, 1369],\n", " [1815, 1387, 931, 1205, None, 801],\n", " [1991, 1561, 1050, 1369, 801, None],\n", "])\n", "\n", "mdisplay(distances, title=None, row_labels=cities, col_labels=cities, fill_value=\"--\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1D arrays and vectors" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
length=1000, 1000 'float64' elements, array
0123456993994995996997998999
0.17080.73650.41660.87640.9640.78090.13690.77040.16080.8160.0083670.28580.64230.8979
\n", "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "vec = np.random.random((1000,))\n", "mdisplay(vec)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.1708, 0.7365, 0.4166, 0.8764, 0.651, ..., 0.008367, 0.2858, 0.6423, 0.8979]\n" ] } ], "source": [ "mprint(vec, indices=False, title=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Sparse N-dimensional Tensors\n", "\n", "Sparse multidimensional tensors are presented as a list of tuples." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
shape=(1000,10,10,10,10), 1234000 'float64' elements, coo, fill_value=0.0, read-only, 56.5MiB
01234val
0000010.8415
1000160.6691
2000210.6162
3000220.09681
4000470.4684
123399599999670.9675
123399699999700.2194
123399799999770.188
123399899999850.03111
123399999999990.1041
\n", "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import sparse\n", "tensor_4d = sparse.random((1000, 10, 10, 10, 10), density=0.1234)\n", "mdisplay(tensor_4d)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " 0 1 2 3 4 val\n", " 0 ( 0, 0, 0, 0, 1, 0.8415 )\n", " 1 ( 0, 0, 0, 1, 6, 0.6691 )\n", " 2 ( 0, 0, 0, 2, 1, 0.6162 )\n", " 3 ( 0, 0, 0, 2, 2, 0.09681)\n", " 4 ( 0, 0, 0, 4, 7, 0.4684 )\n", " ( :, :, :, :, :, : )\n", "1233995 (999, 9, 9, 6, 7, 0.9675 )\n", "1233996 (999, 9, 9, 7, 0, 0.2194 )\n", "1233997 (999, 9, 9, 7, 7, 0.188 )\n", "1233998 (999, 9, 9, 8, 5, 0.03111)\n", "1233999 (999, 9, 9, 9, 9, 0.1041 )\n" ] } ], "source": [ "mprint(tensor_4d)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Dense N-dimensional Numpy Arrays" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
shape=(3,3,3,3), 81 'float64' elements, array
012
0\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0.270.860.96
0.500.050.24
0.460.660.80
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0.410.470.98
0.810.250.24
0.620.130.24
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0.360.010.45
0.110.150.74
0.320.160.49
1\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0.470.130.87
0.290.540.87
0.740.850.36
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0.260.870.67
0.540.380.86
0.530.090.30
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0.640.931.00
0.880.650.65
0.010.180.38
2\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0.530.220.78
0.250.440.88
0.500.490.87
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0.800.260.22
0.940.490.27
0.120.950.28
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0.750.800.65
1.000.220.78
0.820.110.03
\n", "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dense_4d = np.random.random((3, 3, 3, 3))\n", "mdisplay(dense_4d, floatfmt=\".2f\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Graph Adjacency Matrix with Edge and Vertex Weights" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
V1V2V3V4V5V6V7
V123
V284
V31
V433
V57
V61
V7573
\n", "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import graphblas as gb\n", "\n", "edges = gb.Matrix.from_coo(\n", " [3, 0, 3, 5, 6, 0, 6, 1, 6, 2, 4, 1],\n", " [0, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6],\n", " [3, 2, 3, 1, 5, 3, 7, 8, 3, 1, 7, 4],\n", " nrows=7, ncols=7\n", ")\n", "vertices = gb.Vector.from_coo([range(7)], [f\"V{i+1}\" for i in range(7)], size=7)\n", "\n", "mdisplay(edges, row_labels=vertices, col_labels=vertices, title=False)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "source": [ "## Nested matrices" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2023-09-12T03:27:08.649007Z", "start_time": "2023-09-12T03:27:08.624126Z" }, "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
2×2, 4 elements, list
01
0\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0.510.92
0.40
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
1.002.00
3.004.00
1\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
12
34
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0.32
0.56
\n", "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# You may mix types if the datastructure allows, as a Python list does\n", "mat = [\n", " [scipy.sparse.random(2, 2, density=0.8), [[1, 2], [3, 4]]],\n", " [np.array([[1, 2], [3, 4]]), scipy.sparse.random(2, 2, density=0.6)]\n", "]\n", "\n", "mdisplay(mat, floatfmt=\".2f\")" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "source": [ "## Large matrices" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false, "is_executing": true, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
100000000×100000000, 100000000 'float64' elements, csr
012345699999993999999949999999599999996999999979999999899999999
01
11
21
31
41
999999951
999999961
999999971
999999981
999999991
\n", "
" ], "text/plain": [ "<100000000x100000000 sparse matrix of type ''\n", "\twith 100000000 stored elements in Compressed Sparse Row format>" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scipy.sparse.eye(100_000_000, format=\"csr\")" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "ExecuteTime": { "start_time": "2023-09-12T03:27:08.624194Z" }, "collapsed": false, "is_executing": true, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "r = scipy.sparse.random(10000, 10000, density=0.23456789, format=\"csr\")" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false, "is_executing": true, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
10000×10000, 23456789 'float64' elements, csr
01234569993999499959996999799989999
00.52480.26460.038480.5910.81660.89470.3634
10.62120.1660.78990.6492
20.6416
30.71530.9322
40.1142
99950.94420.29250.4961
99960.4630.37820.078740.6619
99970.28670.28230.31
99980.21220.46110.63780.2867
99990.23330.4093
\n", "
" ], "text/plain": [ "<10000x10000 sparse matrix of type ''\n", "\twith 23456789 stored elements in Compressed Sparse Row format>" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "is_executing": true, "jupyter": { "outputs_hidden": false } }, "source": [ "## Duplicate entries\n", "\n", "Some sparse formats allow multiple values with the same indices." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
3×3, 6 'float64' elements, coo
012
01
12.1
2.2
23.1
3.2
3.3
\n", "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "row = [0, 1, 1, 2, 2, 2]\n", "col = [0, 1, 1, 2, 2, 2]\n", "val = [1, 2.1, 2.2, 3.1, 3.2, 3.3]\n", "dupes = scipy.sparse.coo_array((val, (row, col)), shape=(3, 3))\n", "\n", "mdisplay(dupes)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.11.5" } }, "nbformat": 4, "nbformat_minor": 4 }