{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "# Distances exercise\n", "\n", "Plot distances in a grid\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "# 生成一维数组 [0,1,2,3,4],作为后续坐标轴\n", "x = np.arange(5)\n", "\n", "# 生成列向量 [[0],[1],[2],[3],[4]],形状 (5,1),用于广播计算\n", "y = np.arange(5)[:, np.newaxis]\n", "\n", "# 计算每个网格点 (x_i, y_j) 到原点 (0,0) 的欧氏距离,得到 5×5 距离矩阵\n", "distance = np.sqrt(x**2 + y**2)\n", "\n", "# 用伪彩色图显示距离矩阵,颜色深浅对应距离大小\n", "plt.pcolor(distance)\n", "\n", "# 添加右侧颜色标尺,方便对照数值与颜色\n", "plt.colorbar()\n", "\n", "# 弹出窗口展示图形\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.11" } }, "nbformat": 4, "nbformat_minor": 4 }