Skip to content

Instantly share code, notes, and snippets.

@nvictus
Created October 20, 2016 15:47
Show Gist options
  • Save nvictus/f41b4055b721d6906de8164a7af3cf33 to your computer and use it in GitHub Desktop.
Save nvictus/f41b4055b721d6906de8164a7af3cf33 to your computer and use it in GitHub Desktop.
diag utils
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {
"ExecuteTime": {
"start_time": "2016-10-20T11:46:57.934835",
"end_time": "2016-10-20T11:46:58.274596"
},
"trusted": true,
"collapsed": true
},
"cell_type": "code",
"source": "%matplotlib inline\nimport matplotlib.pyplot as plt\nimport numpy as np",
"execution_count": 1,
"outputs": []
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2016-10-20T11:46:58.275811",
"end_time": "2016-10-20T11:46:58.346075"
},
"trusted": true,
"collapsed": true
},
"cell_type": "code",
"source": "def where_diagonal(A, k=0):\n \"\"\"\n Similar to ``numpy.diag_indices_from`` but works on kth diagonals as well.\n \n Parameters\n ----------\n A : 2-D array\n Array.\n \n k : int, optional\n Which diagonal to index. Default is 0 (main diagonal).\n \n Returns\n -------\n tuple of ndarrays\n \n \"\"\"\n m, n = A.shape\n if k >= 0:\n end = min(n, m+k)\n return np.arange(0, end-k), np.arange(k, end)\n else:\n end = min(m, n-k)\n return np.arange(-k, end), np.arange(0, end+k)\n\n\ndef fill_diagonal(A, values, k=0, wrap=False, inplace=False):\n \"\"\"\n Based on ``numpy.fill_diagonal``, but allows for kth diagonals as well.\n Only works on 2D arrays.\n\n Parameters\n ----------\n A : 2-D array-like\n Array whose diagonal is to be filled.\n \n values : scalar or 1-D array\n Value(s) to write to diagonal. Will cycle if 1-D.\n \n k : int, optional\n Which diagonal to write to. Positive and negative indices\n imply upper and lower diagonals, respectively. \n Default is 0 (main diagonal).\n \n wrap : bool, optional\n Wrap diagonal after N columns. Only affects \"tall\" matrices.\n Default is False.\n \n inplace : bool, optional\n Write to array A in-place. \n Only works if np.asarray returns a view.\n \n Returns\n -------\n 2-D array with diagonal values inserted.\n\n \"\"\"\n if A.ndim != 2:\n raise ValueError(\"array must be 2-d\")\n if not inplace:\n A = np.array(A)\n else:\n A = np.asarray(A)\n \n step = A.shape[1] + 1\n\n if k >= 0:\n start = k\n end = None\n if not wrap:\n nsteps = A.shape[1] - k\n end = nsteps*step\n else:\n k = -k\n start = None\n end = A.size - k - 1 + step\n if not wrap:\n nsteps = A.shape[1] - k\n start = end - nsteps * step\n \n A.flat[start:end:step] = values\n return A\n\n\ndef tilt_matrix(A, n_diags=None, pad=np.nan, direction='down'):\n \"\"\"\n Vertically stacks the upper diagonals of A onto a new matrix.\n This is basically a hack to visualize a half-matrix at a 45 degree\n angle, since AFAIK matplotlib can't rotate pixel images.\n\n Input\n -----\n A: ndarray\n Symmetric n x n matrix.\n n_diags: integer, optional\n Number of diagonals to copy, starting from the main diagonal.\n The entire upper triangle is tilted by default.\n pad: number, optional\n Padding value for unfilled elements (default: NaN).\n direction : {'up' | 'down'}, optional\n Place successive diagonals of the array at the top or bottom\n of the stack. Default is 'down'.\n\n Returns\n -------\n T: \"tilted\" version of upper triangle of A.\n\n Note that this transformation distorts the height when viewed with equal \n aspect. When using imshow/matshow, set the aspect ratio to 1/2 or set\n the ``extent`` coordinates appropriately.\n\n >>> f = plt.figure()\n >>> ax = f.add_subplot(111)\n >>> ax.matshow(tilt_heatmap(A), aspect=0.5, origin='lower')\n\n \"\"\"\n n = len(A)\n if n_diags is None:\n n_diags = n\n\n T = np.full((n_diags, n), pad)\n for k in range(n_diags):\n T[k, k//2 : n-(k+1)//2] = A.diagonal(k)\n\n if direction.lower() == 'up':\n T = T[::-1, :]\n elif direction.lower() != 'down':\n raise ValueError(\n \"`direction` must be one of {'up', 'down'}\" +\n \", got '{}'\".format(direction))\n\n return T\n\n\ndef untilt_matrix(T, pad=np.nan, direction='down'):\n \"\"\"\n Restore a tilted matrix to a square matrix.\n \n Input\n -----\n A: ndarray\n Rectangular m x n matrix representing the first m diagonals\n of a n x n square symmetric matrix.\n pad: number, optional\n Padding value for unfilled elements (default: NaN).\n direction : ['up' | 'down' ], optional\n Whether the diagonals making up the rows of T were stacked up or down.\n \n \"\"\"\n n_diags, n = T.shape\n if direction.lower() == 'up':\n T = T[::-1, :]\n elif direction.lower() != 'down':\n raise ValueError(\n \"`direction` must be one of {'up', 'down'}\" +\n \", got '{}'\".format(direction))\n \n A = np.full((n, n), np.nan)\n for k in range(n_diags):\n values = T[k, k//2 : n-(k+1)//2]\n fill_diagonal(A, values, -k, inplace=True)\n fill_diagonal(A, values, k, inplace=True)\n return A\n",
"execution_count": 2,
"outputs": []
},
{
"metadata": {
"trusted": true,
"collapsed": true
},
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### test"
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2016-10-20T11:46:58.346967",
"end_time": "2016-10-20T11:46:58.499805"
},
"trusted": true,
"collapsed": true
},
"cell_type": "code",
"source": "from scipy.linalg import toeplitz\nA = np.random.rand(50,50)\nA = toeplitz(np.arange(50))",
"execution_count": 3,
"outputs": []
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2016-10-20T11:46:58.501340",
"end_time": "2016-10-20T11:46:58.779071"
},
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "plt.matshow(A)",
"execution_count": 4,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": "<matplotlib.image.AxesImage at 0x7fd0074c5940>"
},
"metadata": {},
"execution_count": 4
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": "<matplotlib.figure.Figure at 0x7fd00abd9400>"
},
"metadata": {}
}
]
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2016-10-20T11:46:58.780204",
"end_time": "2016-10-20T11:46:58.944163"
},
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "plt.matshow(tilt_matrix(A, direction='up'))",
"execution_count": 5,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": "<matplotlib.image.AxesImage at 0x7fd006f67048>"
},
"metadata": {},
"execution_count": 5
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": "<matplotlib.figure.Figure at 0x7fd0074902b0>"
},
"metadata": {}
}
]
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2016-10-20T11:46:58.945026",
"end_time": "2016-10-20T11:46:59.074672"
},
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "plt.matshow(untilt_matrix(tilt_matrix(A)))",
"execution_count": 6,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": "<matplotlib.image.AxesImage at 0x7fd006f45a20>"
},
"metadata": {},
"execution_count": 6
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": "<matplotlib.figure.Figure at 0x7fd006f82978>"
},
"metadata": {}
}
]
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2016-10-20T11:46:59.075459",
"end_time": "2016-10-20T11:46:59.259319"
},
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "plt.matshow(untilt_matrix(tilt_matrix(A), direction='up'))",
"execution_count": 7,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": "<matplotlib.image.AxesImage at 0x7fd006ea63c8>"
},
"metadata": {},
"execution_count": 7
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nB5YHNwx/ceORAAAAAElFTkSuQmCC\n",
"text/plain": "<matplotlib.figure.Figure at 0x7fd006ee2748>"
},
"metadata": {}
}
]
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2016-10-20T11:46:59.261805",
"end_time": "2016-10-20T11:46:59.426956"
},
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "plt.matshow(untilt_matrix(tilt_matrix(A, n_diags=15)))",
"execution_count": 8,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": "<matplotlib.image.AxesImage at 0x7fd006e7dd68>"
},
"metadata": {},
"execution_count": 8
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nAElFTkSuQmCC\n",
"text/plain": "<matplotlib.figure.Figure at 0x7fd006eb6320>"
},
"metadata": {}
}
]
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2016-10-20T11:46:59.427814",
"end_time": "2016-10-20T11:46:59.430918"
},
"trusted": true,
"collapsed": true
},
"cell_type": "code",
"source": "assert np.allclose(A, untilt_matrix(tilt_matrix(A)))\nassert np.allclose(A, untilt_matrix(tilt_matrix(A, direction='up'), direction='up'))",
"execution_count": 9,
"outputs": []
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2016-10-20T11:46:59.431684",
"end_time": "2016-10-20T11:47:00.022034"
},
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "X = np.zeros((15, 15))\nX[where_diagonal(X, -4)] = -1\nX[where_diagonal(X, 4)] = 1\nplt.matshow(X)\n\nX = np.zeros((25, 15))\nX[where_diagonal(X, -4)] = -1\nX[where_diagonal(X, 4)] = 1\nplt.matshow(X)\n\nX = np.zeros((15, 25))\nX[where_diagonal(X, -4)] = -1\nX[where_diagonal(X, 4)] = 1\nplt.matshow(X)",
"execution_count": 10,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": "<matplotlib.image.AxesImage at 0x7fd006d75c88>"
},
"metadata": {},
"execution_count": 10
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n0P8DwFEj3UJ1GfkAAAAASUVORK5CYII=\n",
"text/plain": "<matplotlib.figure.Figure at 0x7fd006eb8c88>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAP4AAAGQCAYAAACOH93PAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAADf5JREFUeJzt3V+MXPdZxvHncUxF26iui7Ct1vJuC2qKIlGTi0CJLE/V\nlFggJVEvUAkSTYsQFy2NCEJ1Q6RskKUSJIoqQS+gwXKrBgSBKkGCxljWWmtQUSE1TtpgIqXeTdpm\n06oBFCGVJH65mGNrY/bPeGbOOd59vh9p5dnZmX3Pev2d38zs/sauKgHIsq3vAwDQPcIHAhE+EIjw\ngUCEDwQifCBQb+HbPmT7323/h+1PdDRzr+2Ttr9u+wnbH+9ibjN7m+3HbT/a4cwdtv/K9lPN1/zT\nHc39TdtP2j5r+4u2X9fSnAdtL9s+u+K8nbaP2z5n+zHbOzqa+/vN3/MZ239t+01tz1zxsd+yfcH2\nW0b9fL2Eb3ubpD+SdIuk6yX9ku13dTD6FUl3V9X1kt4j6aMdzZWkuyR9o6NZF31G0t9V1U9Ierek\np9oeaPutkn5D0g1V9ZOStkv6YEvjjmr4b2ilw5JOVNV1kk5K+mRHc49Lur6q9kt6uoW5q82U7b2S\n3i9p8Uo+WV8r/o2Snq6qxap6WdJfSLqt7aFV9XxVnWlOv6RhCG9re27zzfl5SZ9re9aKmW+SdKCq\njkpSVb1SVf/d0fhrJL3R9nZJb5D07TaGVNVpSS9edvZtko41p49Jur2LuVV1oqouNO9+RdLetmc2\n/lDSb1/p5+sr/LdJenbF+8+pgwBXsj0rab+kf+5g3MVvTpe/Jvl2Sd+zfbR5iPEntl/f9tCq+rak\nP5C0JOlbkv6zqk60PXeFXVW13BzL85J2dTj7oo9I+vu2h9i+VdKzVfXElV438sk929dKeljSXc3K\n3+asX5C03NzTcPPWhe2SbpD0x1V1g6T/0fBucKtsv1nDVXdG0lslXWv7jrbnrqPT30m3/TuSXq6q\nh1qe83pJ90i6b+XZo16/r/C/JWnfivf3Nue1rrn7+bCkL1TVIx2MvEnSrbafkfTnkt5r+/MdzH1O\nw9XgX5r3H9bwhqBtN0t6pqq+X1WvSvobST/bwdyLlm3vliTbeyS90NVg23dq+JCuixu6H5M0K+nf\nbH9Tw4b+1fZI93D6Cv+rkn7c9kzzjO8HJXX1bPefSfpGVX2mi2FVdU9V7auqd2j4dZ6sql/pYO6y\n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\nDwQifCDQ/wFkqrPIa7fBVAAAAABJRU5ErkJggg==\n",
"text/plain": "<matplotlib.figure.Figure at 0x7fd006eb8b70>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nAABJRU5ErkJggg==\n",
"text/plain": "<matplotlib.figure.Figure at 0x7fd006e32160>"
},
"metadata": {}
}
]
},
{
"metadata": {
"ExecuteTime": {
"start_time": "2016-10-20T11:47:00.023177",
"end_time": "2016-10-20T11:47:01.287198"
},
"trusted": true,
"scrolled": false,
"collapsed": false
},
"cell_type": "code",
"source": "plt.matshow(fill_diagonal(np.zeros((15, 15)), np.arange(1,12), k=-4))\nplt.matshow(fill_diagonal(np.zeros((15, 15)), np.arange(1,12), k=4))\nplt.matshow(fill_diagonal(np.zeros((15, 25)), np.arange(1,12), k=4))\nplt.matshow(fill_diagonal(np.zeros((15, 25)), np.arange(1,12), k=-4))\nplt.matshow(fill_diagonal(np.zeros((25, 15)), np.arange(1,12), k=4))\nplt.matshow(fill_diagonal(np.zeros((25, 15)), np.arange(1,12), k=-4))\nplt.matshow(fill_diagonal(np.zeros((25, 15)), np.arange(1,12), k=4, wrap=True))\nplt.matshow(fill_diagonal(np.zeros((25, 15)), np.arange(1,12), k=-4, wrap=True))",
"execution_count": 11,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": "<matplotlib.image.AxesImage at 0x7fd006ab9f98>"
},
"metadata": {},
"execution_count": 11
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nAABJRU5ErkJggg==\n",
"text/plain": "<matplotlib.figure.Figure at 0x7fd006d1fe10>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nX2rQ/wEPlW94blxZXQAAAABJRU5ErkJggg==\n",
"text/plain": "<matplotlib.figure.Figure at 0x7fd006d1f2b0>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": "<matplotlib.figure.Figure at 0x7fd006cefb70>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nkqS2/wcf3JWtEw3BaAAAAABJRU5ErkJggg==\n",
"text/plain": "<matplotlib.figure.Figure at 0x7fd006cc8080>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAP4AAAGQCAYAAACOH93PAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAADXpJREFUeJzt3H/IXQUdx/HPZ60oGy2NtlUjrxX+QKjlH2aNaJHlKFAJ\nEjPIVUSEllREan8soT/6QYXQD6hsrcjCLHFB5RpjAwvDsjXNtQSdv2qPRVaMQNR9++Oe0d14nj13\n99xz7tzn/YKL9557z/2ezb3vOfc+z7muKgHIsmTWGwCgf4QPBCJ8IBDhA4EIHwhE+ECgmYVve73t\nP9v+i+1P9TRzte3ttv9k+27bH+1jbjN7ie27bG/pceZy2z+2vaf5M7+up7kfs32P7d22f2D7OR3N\nucH2nO3dI8tOtr3V9l7bt9le3tPcLzR/z7ts/8T2C7qeOXLfJ2wftH3KuM83k/BtL5H0VUkXSDpb\n0rttn9nD6Kckfbyqzpb0eklX9DRXkq6SdG9Psw65XtLPq+osSa+RtKfrgbZfKukjks6pqldLWirp\n0o7GbdLw39CoqyVtq6ozJG2XdE1Pc7dKOruq1ki6r4O5882U7dWS3irpwWN5slnt8c+VdF9VPVhV\nT0r6kaSLuh5aVfuraldz/YCGIbys67nN/5y3S/p217NGZr5A0hurapMkVdVTVfWfnsY/S9LzbS+V\ndJKkv3YxpKpul/T4EYsvkrS5ub5Z0sV9zK2qbVV1sLl5h6TVXc9sfEXSJ4/1+WYV/sskPTxy+xH1\nEOAo2wNJayT9todxh/7n9PlrkqdJ+oftTc1bjG/afl7XQ6vqr5K+JOkhSY9K+ldVbet67ogVVTXX\nbMt+SSt6nH3I+yX9oushti+U9HBV3X2s60Z+uGd7maSbJV3V7Pm7nPUOSXPNkYabSx+WSjpH0teq\n6hxJ/9XwMLhTtl+o4V73VEkvlbTM9mVdzz2KXn8n3fanJT1ZVTd2POd5kq6VtHF08bjrzyr8RyW9\nfOT26mZZ55rDz5slfb+qbu1h5FpJF9q+X9IPJb3Z9vd6mPuIhnuD3zW3b9bwhaBr50u6v6r+WVVP\nS/qppDf0MPeQOdsrJcn2KkmP9TXY9gYN39L18UL3SkkDSX+0/YCGDf3e9lhHOLMK/05Jr7J9avOJ\n76WS+vq0+zuS7q2q6/sYVlXXVtXLq+oVGv45t1fVe3uYOyfpYdunN4veon4+XHxI0nm2n2vbzdwu\n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\nAABJRU5ErkJggg==\n",
"text/plain": "<matplotlib.figure.Figure at 0x7fd006c87710>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nIMIHAv0fz0Dv29nWpPwAAAAASUVORK5CYII=\n",
"text/plain": "<matplotlib.figure.Figure at 0x7fd006bd8550>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": "<matplotlib.figure.Figure at 0x7fd006cec908>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"image/png": "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\ngg==\n",
"text/plain": "<matplotlib.figure.Figure at 0x7fd006b66978>"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true,
"collapsed": true
},
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
}
],
"metadata": {
"kernelspec": {
"name": "python3",
"display_name": "Python 3",
"language": "python"
},
"language_info": {
"mimetype": "text/x-python",
"file_extension": ".py",
"name": "python",
"version": "3.5.2",
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"codemirror_mode": {
"version": 3,
"name": "ipython"
}
},
"toc": {
"toc_threshold": 6,
"toc_window_display": false,
"toc_cell": false,
"toc_number_sections": true
},
"gist": {
"id": "",
"data": {
"description": "diag utils",
"public": false
}
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment