diff --git a/README.md b/README.md index 49e673e..0652c6e 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,10 @@ Make every matrix beautiful. MatRepr formats matrices and tensors to HTML, string, and LaTeX, with Jupyter integration. +See [Jupyter notebook for examples.](doc/demo.ipynb) * **SciPy** - sparse matrices and arrays like `csr_matrix` and `coo_array` -* **NumPy** - `ndarray` +* **NumPy** - `ndarray` [(demo)](doc/demo-numpy.ipynb) * **[PyTorch](https://pytorch.org/docs/stable/sparse.html)** - dense and sparse `torch.Tensor` [(demo)](doc/demo-pytorch.ipynb) * **[TensorFlow](https://www.tensorflow.org/guide/sparse_tensor)** - `tf.Tensor` and `tf.SparseTensor` [(demo)](doc/demo-tensorflow.ipynb) * **[Python-graphblas](https://github.com/python-graphblas/python-graphblas)** - `gb.Matrix` and `gb.Vector` [(demo)](doc/demo-python-graphblas.ipynb) @@ -19,19 +20,17 @@ MatRepr formats matrices and tensors to HTML, string, and LaTeX, with Jupyter in Features: * Jupyter extension to format matrices in cell outputs. -* A `__repr__` monkey patch to format matrices in the Python shell. -* Nested sub-matrices of any supported type, including mixing packages. * Configurable float precision or format string. * Toggle row and column indices or set your own labels. +* Nested sub-matrices of any supported type, including mixing packages. * Toggle matrix description or set your own title. * String output can optionally autodetect terminal width. * Methods to directly display a matrix (`mprint`, `mdisplay` for Jupyter) * Methods to convert to string (`to_html`, `to_latex`, `to_str`). * Configurable per method call or set defaults with `matrepr.params`. +* A `__repr__` monkey patch to format matrices in the Python shell. * Fast. -See [Jupyter notebook with examples.](doc/demo.ipynb) - ## Quick Start ```shell @@ -70,13 +69,19 @@ from matrepr import mdisplay, mprint or simply `A` with monkey patching as below ### HTML -HTML screenshot + +HTML screenshot
+HTML screenshot
+4D NumPy Array
+Adjacency Matrix
`mdisplay(A)`, `to_html(A)` or simply `A` with Jupyter extension `%load_ext matrepr` + ### LaTeX -LaTeX screenshot +LaTeX screenshot
+LaTeX edgecases screenshot `mdisplay(A, 'latex')`, `to_latex(A)` or simply `A` with Jupyter extension `%load_ext matrepr.latex` diff --git a/doc/demo-numpy.ipynb b/doc/demo-numpy.ipynb index cb5c31e..22d7915 100644 --- a/doc/demo-numpy.ipynb +++ b/doc/demo-numpy.ipynb @@ -9,20 +9,22 @@ } }, "source": [ - "# MatRepr numpy" + "# MatRepr NumPy\n", + "\n", + "Compare the native NumPy repr with MatRepr's formatting." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { + "ExecuteTime": { + "end_time": "2023-09-12T06:17:06.024081Z", + "start_time": "2023-09-12T06:17:05.936502Z" + }, "collapsed": false, "jupyter": { "outputs_hidden": false - }, - "ExecuteTime": { - "end_time": "2023-08-31T21:28:07.077311Z", - "start_time": "2023-08-31T21:28:06.917621Z" } }, "outputs": [], @@ -34,123 +36,32 @@ "import sys\n", "sys.path.insert(0, '..')\n", "\n", - "from matrepr import mdisplay" + "from matrepr import mdisplay, mprint" ] }, { "cell_type": "markdown", - "source": [ - "## NumPy\n", - "\n", - "Compare:\n", - "\n", - " * numpy's native `str`\n", - " * MatRepr `str`\n", - " * MatRepr HTML\n", - " * MatRepr LaTeX" - ], - "metadata": { - "collapsed": false - } - }, - { - "cell_type": "code", - "execution_count": 2, - "outputs": [], - "source": [ - "def render_all(mat):\n", - " print(f\"shape: {mat.shape}\")\n", - " print(mat)\n", - " mdisplay(mat, \"str\", txt_width=100)\n", - " mdisplay(mat, \"html\")\n", - " mdisplay(mat, \"latex\")" - ], "metadata": { "collapsed": false, - "ExecuteTime": { - "end_time": "2023-08-31T21:28:07.077458Z", - "start_time": "2023-08-31T21:28:07.030507Z" + "jupyter": { + "outputs_hidden": false } - } - }, - { - "cell_type": "markdown", + }, "source": [ - "#### A long vector" - ], - "metadata": { - "collapsed": false - } + "### 1D vector" + ] }, { "cell_type": "code", - "execution_count": 3, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "shape: (40,)\n", - "[10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33\n", - " 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49]\n" - ] - }, - { - "data": { - "text/plain": "\n 0 1 2 3 4 5 6 34 35 36 37 38 39\n[10 11 12 13 14 15 22 ... 44 45 46 47 48 49 ]" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": "", - "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=40, 40 'int64' elements, array
012345633343536373839
1011121314151643444546474849
\n
" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": "", - "text/latex": "$\\begin{bmatrix}\n \\textrm{10} & \\textrm{11} & \\textrm{12} & \\textrm{13} & \\textrm{14} & \\textrm{15} & \\textrm{16} & \\dots & \\textrm{43} & \\textrm{44} & \\textrm{45} & \\textrm{46} & \\textrm{47} & \\textrm{48} & \\textrm{49}\n\\end{bmatrix}$" - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "v1 = np.arange(10, 50)\n", - "render_all(v1)" - ], + "execution_count": 2, "metadata": { - "collapsed": false, "ExecuteTime": { - "end_time": "2023-08-31T21:28:07.105279Z", - "start_time": "2023-08-31T21:28:07.039637Z" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "#### A small 2D matrix" - ], - "metadata": { - "collapsed": false - } - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { + "end_time": "2023-09-12T06:17:06.050918Z", + "start_time": "2023-09-12T06:17:06.030799Z" + }, "collapsed": false, "jupyter": { "outputs_hidden": false - }, - "ExecuteTime": { - "end_time": "2023-08-31T21:28:07.106765Z", - "start_time": "2023-08-31T21:28:07.071456Z" } }, "outputs": [ @@ -158,440 +69,1797 @@ "name": "stdout", "output_type": "stream", "text": [ - "shape: (2, 2)\n", - "[[1 2]\n", - " [3 4]]\n" + "[10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33\n", + " 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49]\n" ] - }, - { - "data": { - "text/plain": "<2×2, 4 'int64' elements, array>\n 0 1\n ┌ ┐\n0 │ 1 2 │\n1 │ 3 4 │\n └ ┘" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": "", - "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 'int64' elements, array
01
012
134
\n
" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": "", - "text/latex": "$\\begin{bmatrix}\n \\textrm{1} & \\textrm{2} \\\\\n \\textrm{3} & \\textrm{4}\n\\end{bmatrix}$" - }, - "metadata": {}, - "output_type": "display_data" } ], "source": [ - "a1 = np.array([[1, 2], [3, 4]])\n", - "render_all(a1)" + "v1 = np.arange(10, 50)\n", + "print(v1)" ] }, - { - "cell_type": "markdown", - "source": [ - "#### A small 3D matrix" - ], - "metadata": { - "collapsed": false - } - }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, + "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "shape: (2, 2, 2)\n", - "[[[ 1 2]\n", - " [ 3 4]]\n", - "\n", - " [[10 20]\n", - " [30 40]]]\n" - ] - }, - { - "data": { - "text/plain": "\n 0 1\n ┌ ┐\n0 │ [1 2] [3 4] │\n1 │ [10 20] [30 40] │\n └ ┘" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": "", - "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
shape=(2,2,2), 8 'int64' elements, array
01
0\n \n \n \n \n \n \n \n
12
\n \n \n \n \n \n \n \n
34
1\n \n \n \n \n \n \n \n
1020
\n \n \n \n \n \n \n \n
3040
\n
" - }, - "metadata": {}, - "output_type": "display_data" - }, { "data": { - "text/plain": "", - "text/latex": "$\\begin{bmatrix}\n \\begin{bmatrix}\n \\textrm{1} & \\textrm{2}\n\\end{bmatrix} & \\begin{bmatrix}\n \\textrm{3} & \\textrm{4}\n\\end{bmatrix} \\\\\n \\begin{bmatrix}\n \\textrm{10} & \\textrm{20}\n\\end{bmatrix} & \\begin{bmatrix}\n \\textrm{30} & \\textrm{40}\n\\end{bmatrix}\n\\end{bmatrix}$" + "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=40, 40 'int64' elements, array
012345633343536373839
1011121314151643444546474849
\n", + "
" + ], + "text/plain": [ + "" + ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ - "a2 = np.array([\n", - " [[1, 2], [3, 4]],\n", - " [[10, 20], [30, 40]],\n", - "])\n", - "render_all(a2)" - ], - "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2023-08-31T21:28:07.108992Z", - "start_time": "2023-08-31T21:28:07.085962Z" - } - } + "mdisplay(v1)" + ] }, { "cell_type": "markdown", - "source": [ - "#### A small 4D matrix" - ], "metadata": { - "collapsed": false - } + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "source": [ + "### A small 2D matrix" + ] }, { "cell_type": "code", - "execution_count": 6, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "shape: (4, 3, 2, 1)\n", - "[[[[ 0]\n", - " [ 1]]\n", - "\n", - " [[ 2]\n", - " [ 3]]\n", - "\n", - " [[ 4]\n", - " [ 5]]]\n", - "\n", - "\n", - " [[[ 6]\n", - " [ 7]]\n", - "\n", - " [[ 8]\n", - " [ 9]]\n", - "\n", - " [[10]\n", - " [11]]]\n", - "\n", - "\n", - " [[[12]\n", - " [13]]\n", - "\n", - " [[14]\n", - " [15]]\n", - "\n", - " [[16]\n", - " [17]]]\n", - "\n", - "\n", - " [[[18]\n", - " [19]]\n", - "\n", - " [[20]\n", - " [21]]\n", - "\n", - " [[22]\n", - " [23]]]]\n" - ] - }, - { - "data": { - "text/plain": "\n 0 1 2\n ┌ ┐\n0 │ [[0] [1]] [[2] [3]] [[4] [5]] │\n1 │ [[6] [7]] [[8] [9]] [[10] [11]] │\n2 │ [[12] [13]] [[14] [15]] [[16] [17]] │\n3 │ [[18] [19]] [[20] [21]] [[22] [23]] │\n └ ┘" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": "", - "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
shape=(4,3,2,1), 24 'int64' elements, array
012
0\n \n \n \n \n \n \n \n \n \n
0
1
\n \n \n \n \n \n \n \n \n \n
2
3
\n \n \n \n \n \n \n \n \n \n
4
5
1\n \n \n \n \n \n \n \n \n \n
6
7
\n \n \n \n \n \n \n \n \n \n
8
9
\n \n \n \n \n \n \n \n \n \n
10
11
2\n \n \n \n \n \n \n \n \n \n
12
13
\n \n \n \n \n \n \n \n \n \n
14
15
\n \n \n \n \n \n \n \n \n \n
16
17
3\n \n \n \n \n \n \n \n \n \n
18
19
\n \n \n \n \n \n \n \n \n \n
20
21
\n \n \n \n \n \n \n \n \n \n
22
23
\n
" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": "", - "text/latex": "$\\begin{bmatrix}\n \\begin{bmatrix}\n \\textrm{0} \\\\\n \\textrm{1}\n\\end{bmatrix} & \\begin{bmatrix}\n \\textrm{2} \\\\\n \\textrm{3}\n\\end{bmatrix} & \\begin{bmatrix}\n \\textrm{4} \\\\\n \\textrm{5}\n\\end{bmatrix} \\\\\n \\begin{bmatrix}\n \\textrm{6} \\\\\n \\textrm{7}\n\\end{bmatrix} & \\begin{bmatrix}\n \\textrm{8} \\\\\n \\textrm{9}\n\\end{bmatrix} & \\begin{bmatrix}\n \\textrm{10} \\\\\n \\textrm{11}\n\\end{bmatrix} \\\\\n \\begin{bmatrix}\n \\textrm{12} \\\\\n \\textrm{13}\n\\end{bmatrix} & \\begin{bmatrix}\n \\textrm{14} \\\\\n \\textrm{15}\n\\end{bmatrix} & \\begin{bmatrix}\n \\textrm{16} \\\\\n \\textrm{17}\n\\end{bmatrix} \\\\\n \\begin{bmatrix}\n \\textrm{18} \\\\\n \\textrm{19}\n\\end{bmatrix} & \\begin{bmatrix}\n \\textrm{20} \\\\\n \\textrm{21}\n\\end{bmatrix} & \\begin{bmatrix}\n \\textrm{22} \\\\\n \\textrm{23}\n\\end{bmatrix}\n\\end{bmatrix}$" - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "shape = (4,3,2,1)\n", - "a3 = np.arange(np.prod(shape)).reshape(shape)\n", - "render_all(a3)" - ], + "execution_count": 4, "metadata": { - "collapsed": false, "ExecuteTime": { - "end_time": "2023-08-31T21:28:07.144995Z", - "start_time": "2023-08-31T21:28:07.097664Z" + "end_time": "2023-09-12T06:17:06.053224Z", + "start_time": "2023-09-12T06:17:06.049889Z" + }, + "collapsed": false, + "jupyter": { + "outputs_hidden": false } - } - }, - { - "cell_type": "code", - "execution_count": 7, + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "shape: (2, 2, 2, 2)\n", - "[[[[0.69646919 0.28613933]\n", - " [0.22685145 0.55131477]]\n", - "\n", - " [[0.71946897 0.42310646]\n", - " [0.9807642 0.68482974]]]\n", - "\n", - "\n", - " [[[0.4809319 0.39211752]\n", - " [0.34317802 0.72904971]]\n", - "\n", - " [[0.43857224 0.0596779 ]\n", - " [0.39804426 0.73799541]]]]\n" + "[[0.69646919 0.28613933 0.22685145 0.55131477 0.71946897 0.42310646\n", + " 0.9807642 0.68482974 0.4809319 0.39211752]\n", + " [0.34317802 0.72904971 0.43857224 0.0596779 0.39804426 0.73799541\n", + " 0.18249173 0.17545176 0.53155137 0.53182759]\n", + " [0.63440096 0.84943179 0.72445532 0.61102351 0.72244338 0.32295891\n", + " 0.36178866 0.22826323 0.29371405 0.63097612]\n", + " [0.09210494 0.43370117 0.43086276 0.4936851 0.42583029 0.31226122\n", + " 0.42635131 0.89338916 0.94416002 0.50183668]\n", + " [0.62395295 0.1156184 0.31728548 0.41482621 0.86630916 0.25045537\n", + " 0.48303426 0.98555979 0.51948512 0.61289453]\n", + " [0.12062867 0.8263408 0.60306013 0.54506801 0.34276383 0.30412079\n", + " 0.41702221 0.68130077 0.87545684 0.51042234]\n", + " [0.66931378 0.58593655 0.6249035 0.67468905 0.84234244 0.08319499\n", + " 0.76368284 0.24366637 0.19422296 0.57245696]\n", + " [0.09571252 0.88532683 0.62724897 0.72341636 0.01612921 0.59443188\n", + " 0.55678519 0.15895964 0.15307052 0.69552953]\n", + " [0.31876643 0.6919703 0.55438325 0.38895057 0.92513249 0.84167\n", + " 0.35739757 0.04359146 0.30476807 0.39818568]\n", + " [0.70495883 0.99535848 0.35591487 0.76254781 0.59317692 0.6917018\n", + " 0.15112745 0.39887629 0.2408559 0.34345601]]\n" ] - }, - { - "data": { - "text/plain": "\n \n ┌ ┐\n0 │ ... │\n1 │ ... │\n └ ┘" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": "", - "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
shape=(2,2,2,2), 16 'float64' elements, array
01
0\n \n \n \n \n \n \n \n \n \n \n \n
0.69650.2861
0.22690.5513
\n \n \n \n \n \n \n \n \n \n \n \n
0.71950.4231
0.98080.6848
1\n \n \n \n \n \n \n \n \n \n \n \n
0.48090.3921
0.34320.729
\n \n \n \n \n \n \n \n \n \n \n \n
0.43860.05968
0.3980.738
\n
" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": "", - "text/latex": "$\\begin{bmatrix}\n \\begin{bmatrix}\n 0.6965 & 0.2861 \\\\\n 0.2269 & 0.5513\n\\end{bmatrix} & \\begin{bmatrix}\n 0.7195 & 0.4231 \\\\\n 0.9808 & 0.6848\n\\end{bmatrix} \\\\\n \\begin{bmatrix}\n 0.4809 & 0.3921 \\\\\n 0.3432 & 0.729\n\\end{bmatrix} & \\begin{bmatrix}\n 0.4386 & 0.05968 \\\\\n 0.398 & 0.738\n\\end{bmatrix}\n\\end{bmatrix}$" - }, - "metadata": {}, - "output_type": "display_data" } ], "source": [ - "r_4d = np.random.random_sample((2, 2, 2, 2))\n", - "render_all(r_4d)" - ], - "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2023-08-31T21:28:07.205904Z", - "start_time": "2023-08-31T21:28:07.110701Z" - } - } - }, - { - "cell_type": "markdown", - "source": [ - "#### A big 2D matrix" - ], - "metadata": { - "collapsed": false - } + "mat = np.random.random((10, 10))\n", + "print(mat)" + ] }, { "cell_type": "code", - "execution_count": 8, - "metadata": { - "ExecuteTime": { - "end_time": "2023-08-31T21:28:07.235983Z", - "start_time": "2023-08-31T21:28:07.125177Z" - } - }, + "execution_count": 5, + "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "shape: (100, 100)\n", - "[[0.18249173 0.17545176 0.53155137 ... 0.82911263 0.33867085 0.55237008]\n", - " [0.57855147 0.52153306 0.00268806 ... 0.78818717 0.41156922 0.48102628]\n", - " [0.18162884 0.3213189 0.845533 ... 0.41862686 0.45308892 0.93235066]\n", - " ...\n", - " [0.50410699 0.56633121 0.85792438 ... 0.71670244 0.82622255 0.44210097]\n", - " [0.53520708 0.23358017 0.33966677 ... 0.70903058 0.87831424 0.38683206]\n", - " [0.42822551 0.89005017 0.04675397 ... 0.18451346 0.90837483 0.04621222]]\n" - ] - }, - { - "data": { - "text/plain": "<100×100, 10000 'float64' elements, array>\n 0 1 2 3 96 97 98 99\n ┌ ┐\n 0 │ 0.1825 0.1755 0.5316 0.2937 ... 0.1711 0.8291 0.3387 0.5524 │\n 1 │ 0.5786 0.5215 0.002688 0.807 ... 0.4259 0.7882 0.4116 0.481 │\n 2 │ 0.1816 0.3213 0.8455 0.3137 ... 0.2982 0.4186 0.4531 0.9324 │\n 3 │ 0.5875 0.9483 0.556 0.02661 ... 0.9471 0.6177 0.3689 0.612 │\n 4 │ 0.2061 0.1651 0.3618 0.6559 ... 0.9224 0.3034 0.3398 0.5951 │\n │ : : : : ... : : : : │\n95 │ 0.9905 0.6927 0.4909 0.9723 ... 0.433 0.5128 0.6353 0.7554 │\n96 │ 0.4565 0.606 0.2688 0.9039 ... 0.6148 0.4215 0.006212 0.8734 │\n97 │ 0.5041 0.5663 0.8579 0.8407 ... 0.1672 0.7167 0.8262 0.4421 │\n98 │ 0.5352 0.2336 0.3397 0.105 ... 0.2527 0.709 0.8783 0.3868 │\n99 │ 0.4282 0.8901 0.04675 0.2139 ... 0.4971 0.1845 0.9084 0.04621 │\n └ ┘" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": "", - "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
100×100, 10000 'float64' elements, array
012345693949596979899
00.18250.17550.53160.53180.63440.84940.72450.38480.31680.35430.17110.82910.33870.5524
10.57860.52150.0026880.98830.90530.20760.29250.04910.79230.51870.42590.78820.41160.481
20.18160.32130.84550.18690.41730.9890.23660.22550.57210.6610.29820.41860.45310.9324
30.58750.94830.5560.50060.0035320.48090.92750.036320.040680.33280.94710.61770.36890.612
40.20610.16510.36180.86340.50940.29690.95030.51760.8040.85770.92240.30340.33980.5951
950.99050.69270.49090.41110.57690.20610.43760.89110.49450.42430.4330.51280.63530.7554
960.45650.6060.26880.32850.1610.17450.43880.15510.90990.40560.61480.42150.0062120.8734
970.50410.56630.85790.83050.18380.71380.16240.8770.0056580.98940.16720.71670.82620.4421
980.53520.23360.33970.053680.14920.59290.18910.63710.070560.39070.25270.7090.87830.3868
990.42820.89010.046750.72190.95490.49760.076160.3530.36660.5460.49710.18450.90840.04621
\n
" - }, - "metadata": {}, - "output_type": "display_data" - }, { "data": { - "text/plain": "", - "text/latex": "$\\begin{bmatrix}\n 0.1825 & 0.1755 & 0.5316 & 0.5318 & 0.6344 & 0.8494 & 0.7245 & \\dots & 0.3848 & 0.3168 & 0.3543 & 0.1711 & 0.8291 & 0.3387 & 0.5524 \\\\\n 0.5786 & 0.5215 & 0.002688 & 0.9883 & 0.9053 & 0.2076 & 0.2925 & \\dots & 0.0491 & 0.7923 & 0.5187 & 0.4259 & 0.7882 & 0.4116 & 0.481 \\\\\n 0.1816 & 0.3213 & 0.8455 & 0.1869 & 0.4173 & 0.989 & 0.2366 & \\dots & 0.2255 & 0.5721 & 0.661 & 0.2982 & 0.4186 & 0.4531 & 0.9324 \\\\\n 0.5875 & 0.9483 & 0.556 & 0.5006 & 0.003532 & 0.4809 & 0.9275 & \\dots & 0.03632 & 0.04068 & 0.3328 & 0.9471 & 0.6177 & 0.3689 & 0.612 \\\\\n 0.2061 & 0.1651 & 0.3618 & 0.8634 & 0.5094 & 0.2969 & 0.9503 & \\dots & 0.5176 & 0.804 & 0.8577 & 0.9224 & 0.3034 & 0.3398 & 0.5951 \\\\\n \\vdots & \\vdots & \\vdots & \\vdots & \\vdots & \\vdots & \\vdots & \\ddots & \\vdots & \\vdots & \\vdots & \\vdots & \\vdots & \\vdots & \\vdots \\\\\n 0.9905 & 0.6927 & 0.4909 & 0.4111 & 0.5769 & 0.2061 & 0.4376 & \\dots & 0.8911 & 0.4945 & 0.4243 & 0.433 & 0.5128 & 0.6353 & 0.7554 \\\\\n 0.4565 & 0.606 & 0.2688 & 0.3285 & 0.161 & 0.1745 & 0.4388 & \\dots & 0.1551 & 0.9099 & 0.4056 & 0.6148 & 0.4215 & 0.006212 & 0.8734 \\\\\n 0.5041 & 0.5663 & 0.8579 & 0.8305 & 0.1838 & 0.7138 & 0.1624 & \\dots & 0.877 & 0.005658 & 0.9894 & 0.1672 & 0.7167 & 0.8262 & 0.4421 \\\\\n 0.5352 & 0.2336 & 0.3397 & 0.05368 & 0.1492 & 0.5929 & 0.1891 & \\dots & 0.6371 & 0.07056 & 0.3907 & 0.2527 & 0.709 & 0.8783 & 0.3868 \\\\\n 0.4282 & 0.8901 & 0.04675 & 0.7219 & 0.9549 & 0.4976 & 0.07616 & \\dots & 0.353 & 0.3666 & 0.546 & 0.4971 & 0.1845 & 0.9084 & 0.04621\n\\end{bmatrix}$" + "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.69650.28610.22690.55130.71950.42310.98080.68480.48090.3921
10.34320.72900.43860.05970.39800.73800.18250.17550.53160.5318
20.63440.84940.72450.61100.72240.32300.36180.22830.29370.6310
30.09210.43370.43090.49370.42580.31230.42640.89340.94420.5018
40.62400.11560.31730.41480.86630.25050.48300.98560.51950.6129
50.12060.82630.60310.54510.34280.30410.41700.68130.87550.5104
60.66930.58590.62490.67470.84230.08320.76370.24370.19420.5725
70.09570.88530.62720.72340.01610.59440.55680.15900.15310.6955
80.31880.69200.55440.38900.92510.84170.35740.04360.30480.3982
90.70500.99540.35590.76250.59320.69170.15110.39890.24090.3435
\n", + "
" + ], + "text/plain": [ + "" + ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ - "big_2D = np.random.random_sample((100, 100))\n", - "render_all(big_2D)" + "mdisplay(mat, floatfmt=\".4f\")" ] }, { "cell_type": "markdown", - "source": [ - "## Jupyter formatting" - ], - "metadata": { - "collapsed": false - } - }, - { - "cell_type": "code", - "execution_count": 9, "metadata": { - "ExecuteTime": { - "end_time": "2023-08-31T21:28:07.236964Z", - "start_time": "2023-08-31T21:28:07.164346Z" + "collapsed": false, + "jupyter": { + "outputs_hidden": false } }, - "outputs": [ - { - "data": { - "text/plain": "array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,\n 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,\n 44, 45, 46, 47, 48, 49])" - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "v1" + "### A 4D matrix" ] }, { "cell_type": "code", - "execution_count": 10, - "outputs": [ - { - "data": { - "text/plain": "array([[1, 2],\n [3, 4]])" - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "a1" - ], + "execution_count": 6, "metadata": { - "collapsed": false, "ExecuteTime": { - "end_time": "2023-08-31T21:28:07.237155Z", - "start_time": "2023-08-31T21:28:07.185039Z" + "end_time": "2023-09-12T06:17:06.136533Z", + "start_time": "2023-09-12T06:17:06.068761Z" + }, + "collapsed": false, + "jupyter": { + "outputs_hidden": false } - } - }, - { - "cell_type": "code", - "execution_count": 11, + }, "outputs": [ { "data": { - "text/plain": "array([[[ 1, 2],\n [ 3, 4]],\n\n [[10, 20],\n [30, 40]]])" + "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", + "
shape=(1000,4,4,4), 64000 'float64' elements, array
0123
0\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.510.670.110.13
0.320.660.850.55
0.850.380.320.35
0.170.830.340.55
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.580.520.000.99
0.910.210.290.52
0.900.980.260.56
0.810.390.730.16
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.600.870.980.08
0.430.200.450.55
0.090.300.930.57
0.460.750.740.05
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.710.840.170.78
0.290.310.670.11
0.660.890.700.44
0.440.770.570.08
1\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.580.810.340.93
0.750.570.750.08
0.860.820.910.13
0.080.140.400.42
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.560.120.200.81
0.470.810.010.55
0.930.580.210.72
0.380.670.030.64
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.030.740.470.12
0.540.070.651.00
0.770.570.100.70
0.660.050.790.52
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.430.790.410.48
0.180.320.850.19
0.420.990.240.92
0.920.090.460.50
2\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.310.050.240.10
0.240.810.890.04
0.300.980.540.63
0.010.480.990.38
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.100.460.960.34
0.800.800.210.44
0.720.410.190.97
0.650.870.030.27
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.500.070.990.24
0.370.210.110.23
0.300.630.280.36
0.010.370.530.16
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.600.290.630.03
0.890.020.130.78
0.050.710.970.87
0.710.960.430.87
3\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.360.930.150.94
0.830.850.120.60
0.020.720.010.08
0.230.880.360.54
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.570.230.570.66
0.300.420.450.93
0.590.950.560.50
0.000.480.930.20
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.050.410.370.86
0.030.920.680.90
0.610.810.340.35
0.390.750.370.24
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.940.910.350.63
0.270.210.340.33
0.880.820.710.96
0.420.250.120.30
4\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.150.090.600.36
0.560.190.680.22
0.280.740.560.33
0.540.690.910.58
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.230.750.780.20
0.820.460.780.24
0.330.950.660.77
0.690.200.470.81
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.680.010.090.35
0.940.490.270.36
0.210.420.220.85
0.460.280.930.31
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.910.040.710.48
0.440.040.040.33
0.950.620.370.61
0.210.170.360.86
996\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.160.170.670.10
0.010.980.230.40
0.150.640.890.32
0.540.440.160.11
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.070.570.600.37
0.800.600.620.01
0.380.210.110.81
0.650.120.720.32
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.430.380.110.82
0.510.420.830.10
0.700.240.770.93
0.810.190.140.39
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.420.480.060.72
0.210.650.040.53
0.300.240.870.69
0.730.830.760.17
997\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.800.790.920.97
0.870.070.160.65
0.990.080.080.55
0.250.850.690.02
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.410.340.631.00
0.520.680.330.23
0.430.130.470.44
0.590.050.280.99
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.200.750.630.56
0.820.120.120.19
0.190.070.900.73
0.940.180.790.48
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.440.730.580.28
0.560.930.050.58
0.480.000.780.81
0.500.040.750.85
998\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.260.950.430.47
0.840.810.810.56
0.280.200.470.57
1.000.840.670.61
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.610.710.120.91
0.270.950.860.84
0.400.640.680.24
0.200.560.210.18
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.420.920.190.57
0.740.560.990.88
0.050.370.440.56
0.640.080.610.45
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.270.070.480.48
0.570.620.500.87
0.120.010.650.78
0.740.890.250.86
999\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.570.760.700.93
0.360.390.980.46
0.560.380.950.68
0.800.530.260.43
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.820.750.700.66
0.810.870.390.60
0.540.900.560.67
0.720.540.720.18
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.380.610.310.61
0.220.400.950.10
0.750.710.690.68
0.970.450.930.88
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0.860.150.150.44
0.520.950.770.77
0.120.890.770.05
0.870.830.250.89
\n", + "
" + ], + "text/plain": [ + "" + ] }, - "execution_count": 11, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ - "a2" - ], - "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2023-08-31T21:28:07.237279Z", - "start_time": "2023-08-31T21:28:07.185325Z" - } - } - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## More compact size" + "dense_4d = np.random.random((1000, 4, 4, 4))\n", + "mdisplay(dense_4d, floatfmt=\".2f\", max_rows=10)" ] }, { - "cell_type": "code", - "execution_count": 12, + "cell_type": "markdown", "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false - }, - "ExecuteTime": { - "end_time": "2023-08-31T21:28:07.237342Z", - "start_time": "2023-08-31T21:28:07.193945Z" } }, - "outputs": [], "source": [ - "import matrepr\n", - "matrepr.params.max_rows = 10\n", - "matrepr.params.max_cols = 7\n", - "matrepr.params.num_after_dots = 0\n", - "matrepr.params.indices = False" + "### A big 2D matrix" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 7, "metadata": { - "collapsed": false, - "jupyter": { - "outputs_hidden": false - }, "ExecuteTime": { - "end_time": "2023-08-31T21:28:07.237957Z", - "start_time": "2023-08-31T21:28:07.198275Z" + "end_time": "2023-09-12T06:17:06.143186Z", + "start_time": "2023-09-12T06:17:06.074773Z" } }, "outputs": [ @@ -599,120 +1867,392 @@ "name": "stdout", "output_type": "stream", "text": [ - "shape: (40,)\n", - "[10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33\n", - " 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49]\n" + "[[0.56897491 0.24869477 0.23282594 ... 0.21161221 0.66903464 0.08251657]\n", + " [0.12299359 0.27387659 0.27787458 ... 0.8907579 0.12631836 0.67237412]\n", + " [0.95737435 0.89307959 0.337757 ... 0.24244685 0.5881787 0.26390893]\n", + " ...\n", + " [0.47967836 0.19472549 0.25491632 ... 0.00531315 0.02790694 0.83464496]\n", + " [0.8427453 0.42523669 0.52167786 ... 0.44991197 0.37039488 0.56834534]\n", + " [0.87152284 0.13423159 0.80242772 ... 0.91821905 0.41780322 0.43819597]]\n" ] - }, - { - "data": { - "text/plain": "\n[10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 34, ...]" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": "", - "text/html": "
\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n
length=40, 40 'int64' elements, array
101112131415
\n
" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": "", - "text/latex": "$\\begin{bmatrix}\n \\textrm{10} & \\textrm{11} & \\textrm{12} & \\textrm{13} & \\textrm{14} & \\textrm{15} & \\dots\n\\end{bmatrix}$" - }, - "metadata": {}, - "output_type": "display_data" } ], "source": [ - "render_all(v1)" + "big_2D = np.random.random_sample((100, 100))\n", + "print(big_2D)" ] }, { "cell_type": "code", - "execution_count": 13, - "outputs": [], - "source": [], + "execution_count": 8, "metadata": { - "collapsed": false, "ExecuteTime": { - "end_time": "2023-08-31T21:28:07.238145Z", - "start_time": "2023-08-31T21:28:07.205Z" - } - } - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { + "end_time": "2023-09-12T06:17:06.245184Z", + "start_time": "2023-09-12T06:17:06.239630Z" + }, "collapsed": false, "jupyter": { "outputs_hidden": false - }, - "ExecuteTime": { - "end_time": "2023-08-31T21:28:07.239005Z", - "start_time": "2023-08-31T21:28:07.218523Z" } }, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "shape: (100, 100)\n", - "[[0.18249173 0.17545176 0.53155137 ... 0.82911263 0.33867085 0.55237008]\n", - " [0.57855147 0.52153306 0.00268806 ... 0.78818717 0.41156922 0.48102628]\n", - " [0.18162884 0.3213189 0.845533 ... 0.41862686 0.45308892 0.93235066]\n", - " ...\n", - " [0.50410699 0.56633121 0.85792438 ... 0.71670244 0.82622255 0.44210097]\n", - " [0.53520708 0.23358017 0.33966677 ... 0.70903058 0.87831424 0.38683206]\n", - " [0.42822551 0.89005017 0.04675397 ... 0.18451346 0.90837483 0.04621222]]\n" - ] - }, { "data": { - "text/plain": "<100×100, 10000 'float64' elements, array>\n┌ ┐\n│ 0.1825 0.1755 0.5316 0.5318 0.6344 0.8494 0.7245 0.624 ... │\n│ 0.5786 0.5215 0.002688 0.9883 0.9053 0.2076 0.2925 0.09333 ... │\n│ 0.1816 0.3213 0.8455 0.1869 0.4173 0.989 0.2366 0.005545 ... │\n│ 0.5875 0.9483 0.556 0.5006 0.003532 0.4809 0.9275 0.9377 ... │\n│ 0.2061 0.1651 0.3618 0.8634 0.5094 0.2969 0.9503 0.4235 ... │\n│ 0.4413 0.9328 0.3976 0.4778 0.6172 0.4047 0.9925 0.2475 ... │\n│ 0.2986 0.9418 0.9088 0.162 0.9811 0.7507 0.54 0.09818 ... │\n│ 0.04357 0.684 0.1961 0.02734 0.551 0.8133 0.8599 0.769 ... │\n│ 0.2207 0.294 0.8285 0.3673 0.08335 0.1963 0.8604 0.7516 ... │\n│ : : : : : : : : ... │\n└ ┘" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": "", - "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
100×100, 10000 'float64' elements, array
0.18250.17550.53160.53180.63440.8494
0.57860.52150.0026880.98830.90530.2076
0.18160.32130.84550.18690.41730.989
0.58750.94830.5560.50060.0035320.4809
0.20610.16510.36180.86340.50940.2969
0.44130.93280.39760.47780.61720.4047
0.29860.94180.90880.1620.98110.7507
0.043570.6840.19610.027340.5510.8133
0.22070.2940.82850.36730.083350.1963
\n
" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": "", - "text/latex": "$\\begin{bmatrix}\n 0.1825 & 0.1755 & 0.5316 & 0.5318 & 0.6344 & 0.8494 & \\dots \\\\\n 0.5786 & 0.5215 & 0.002688 & 0.9883 & 0.9053 & 0.2076 & \\dots \\\\\n 0.1816 & 0.3213 & 0.8455 & 0.1869 & 0.4173 & 0.989 & \\dots \\\\\n 0.5875 & 0.9483 & 0.556 & 0.5006 & 0.003532 & 0.4809 & \\dots \\\\\n 0.2061 & 0.1651 & 0.3618 & 0.8634 & 0.5094 & 0.2969 & \\dots \\\\\n 0.4413 & 0.9328 & 0.3976 & 0.4778 & 0.6172 & 0.4047 & \\dots \\\\\n 0.2986 & 0.9418 & 0.9088 & 0.162 & 0.9811 & 0.7507 & \\dots \\\\\n 0.04357 & 0.684 & 0.1961 & 0.02734 & 0.551 & 0.8133 & \\dots \\\\\n 0.2207 & 0.294 & 0.8285 & 0.3673 & 0.08335 & 0.1963 & \\dots \\\\\n \\vdots & \\vdots & \\vdots & \\vdots & \\vdots & \\vdots & \\ddots\n\\end{bmatrix}$" + "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", + "
100×100, 10000 'float64' elements, array
012345693949596979899
00.5690.24870.23280.32460.65830.83480.82320.53070.081070.87710.41080.21160.6690.08252
10.1230.27390.27790.45470.27950.13710.81060.29750.1570.80990.16190.89080.12630.6724
20.95740.89310.33780.59270.49820.038480.39330.79260.890.72760.37310.24240.58820.2639
30.84360.73470.57040.71270.023630.082410.69090.76490.61260.53970.16590.56970.29960.2723
40.016310.7020.077510.75950.11780.73410.49030.50990.13880.16990.26370.57280.079810.8403
950.85810.45630.62230.56240.31510.79320.78220.5050.7680.71830.072980.67270.24780.4534
960.98880.14420.71170.43810.92550.46610.47080.39530.24480.9120.26480.33050.19950.7237
970.47970.19470.25490.64670.29360.0027540.20790.012840.67050.59630.41320.0053130.027910.8346
980.84270.42520.52170.21930.097710.13590.45420.51320.0096420.095320.35950.44990.37040.5683
990.87150.13420.80240.23260.68210.074440.93370.10040.75350.3260.40.91820.41780.4382
\n", + "
" + ], + "text/plain": [ + "" + ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ - "render_all(big_2D)" + "mdisplay(big_2D)" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, + "metadata": {}, "outputs": [], - "source": [], - "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2023-08-31T21:28:07.239045Z", - "start_time": "2023-08-31T21:28:07.228626Z" - } - } + "source": [] } ], "metadata": { @@ -731,7 +2271,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.2" + "version": "3.11.5" } }, "nbformat": 4, diff --git a/doc/demo.ipynb b/doc/demo.ipynb index f11ac08..f4b6a80 100644 --- a/doc/demo.ipynb +++ b/doc/demo.ipynb @@ -18,13 +18,13 @@ "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 - }, - "ExecuteTime": { - "end_time": "2023-09-01T19:07:01.026975Z", - "start_time": "2023-09-01T19:07:00.830991Z" } }, "outputs": [], @@ -37,7 +37,7 @@ "import sys\n", "sys.path.insert(0, '..')\n", "\n", - "from matrepr import mdisplay" + "from matrepr import mdisplay, mprint" ] }, { @@ -56,13 +56,13 @@ "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 - }, - "ExecuteTime": { - "end_time": "2023-09-01T19:07:01.046299Z", - "start_time": "2023-09-01T19:07:01.023246Z" } }, "outputs": [], @@ -79,27 +79,213 @@ } }, "source": [ - "### SciPy sparse matrix" + "## 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 - }, - "ExecuteTime": { - "end_time": "2023-09-01T19:07:01.046605Z", - "start_time": "2023-09-01T19:07:01.032299Z" } }, "outputs": [ { "data": { - "text/plain": "<5x5 sparse matrix of type ''\n\twith 12 stored elements in COOrdinate format>", - "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
5×5, 12 'float64' elements, coo
01234
00.53160.7245
10.3230.5318
20.72240.6310.6344
30.22830.6110.8494
40.36180.2937
\n
" + "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": {}, @@ -107,7 +293,887 @@ } ], "source": [ - "scipy.sparse.random(5, 5, density=0.5)" + "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)" ] }, { @@ -119,27 +1185,211 @@ } }, "source": [ - "### 2D NumPy array with row and column labels" + "## 2D NumPy array with row and column labels" ] }, { "cell_type": "code", - "execution_count": 4, + "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 - }, - "ExecuteTime": { - "end_time": "2023-09-01T19:07:01.050660Z", - "start_time": "2023-09-01T19:07:01.040636Z" } }, "outputs": [ { "data": { - "text/plain": "", - "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/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" @@ -156,7 +1406,1073 @@ " [1991, 1561, 1050, 1369, 801, None],\n", "])\n", "\n", - "mdisplay(distances, title=None, row_labels=cities, col_labels=cities, fill_value=\"-\")" + "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)" ] }, { @@ -168,27 +2484,212 @@ } }, "source": [ - "### Nested sub-matrices" + "## Nested matrices" ] }, { "cell_type": "code", - "execution_count": 5, + "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 - }, - "ExecuteTime": { - "end_time": "2023-09-01T19:07:01.074454Z", - "start_time": "2023-09-01T19:07:01.052464Z" } }, "outputs": [ { "data": { - "text/plain": "", - "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.1739
0.02798
\n \n \n \n \n \n \n \n \n \n \n \n
12
34
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.4264
0.3123
\n
" + "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" @@ -197,11 +2698,11 @@ "source": [ "# You may mix types if the datastructure allows, as a Python list does\n", "mat = [\n", - " [scipy.sparse.random(2, 2, density=0.6), [[1, 2], [3, 4]]],\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)" + "mdisplay(mat, floatfmt=\".2f\")" ] }, { @@ -213,47 +2714,747 @@ } }, "source": [ - "### Large matrices" + "## Large matrices" ] }, { "cell_type": "code", - "execution_count": 6, + "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": { - "end_time": "2023-09-01T19:07:05.210310Z", - "start_time": "2023-09-01T19:07:01.059338Z" + "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.23421, format=\"csr\")" + "r = scipy.sparse.random(10000, 10000, density=0.23456789, format=\"csr\")" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 16, "metadata": { "collapsed": false, + "is_executing": true, "jupyter": { "outputs_hidden": false - }, - "ExecuteTime": { - "end_time": "2023-09-01T19:07:05.214191Z", - "start_time": "2023-09-01T19:07:05.210759Z" } }, "outputs": [ { "data": { - "text/plain": "<10000x10000 sparse matrix of type ''\n\twith 23421000 stored elements in Compressed Sparse Row format>", - "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, 23421000 'float64' elements, csr
01234569993999499959996999799989999
00.26360.54150.62790.6977
10.85830.95480.16160.16830.01884
20.73110.1257
30.16560.7769
40.4144
99950.68080.62610.64020.03003
99960.530.25350.37320.81990.51950.003138
99970.38840.1740.38850.61270.73060.3807
99980.68660.5196
99990.47880.20060.35530.6836
\n
" + "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": 7, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -263,46 +3464,193 @@ ] }, { - "cell_type": "code", - "execution_count": 8, + "cell_type": "markdown", "metadata": { "collapsed": false, + "is_executing": true, "jupyter": { "outputs_hidden": false - }, - "ExecuteTime": { - "end_time": "2023-09-01T19:07:05.478907Z", - "start_time": "2023-09-01T19:07:05.214670Z" } }, + "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/plain": "<100000000x100000000 sparse matrix of type ''\n\twith 100000000 stored elements in Compressed Sparse Row format>", - "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/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": [ + "" + ] }, - "execution_count": 8, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ - "scipy.sparse.eye(100_000_000, format=\"csr\")" + "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": 8, - "metadata": { - "collapsed": false, - "jupyter": { - "outputs_hidden": false - }, - "ExecuteTime": { - "end_time": "2023-09-01T19:07:05.480525Z", - "start_time": "2023-09-01T19:07:05.479173Z" - } - }, + "execution_count": null, + "metadata": {}, "outputs": [], "source": [] } @@ -323,7 +3671,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.2" + "version": "3.11.5" } }, "nbformat": 4,