{ "nbformat": 4, "nbformat_minor": 2, "metadata": { "language_info": { "name": "python", "codemirror_mode": { "name": "ipython", "version": 3 }, "version": "3.7.3-final" }, "orig_nbformat": 2, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "npconvert_exporter": "python", "pygments_lexer": "ipython3", "version": 3, "kernelspec": { "name": "python37364bita178267b7104410b8f4fa90d927b8508", "display_name": "Python 3.7.3 64-bit" } }, "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "python内置对象list是一维数组,而numpy提供了n维数组及其运算,其数据类型是ndarray,运算法则依然遵循list方式,对于多维数组、矢量以及矩阵运算非常方便。" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": "array([[1, 2],\n [3, 4]])" }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#将list转换为ndarray\n", "np.array([[1,2], [3,4]])" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": "array([[ 0, 1, 2, 3, 4],\n [ 5, 6, 7, 8, 9],\n [10, 11, 12, 13, 14],\n [15, 16, 17, 18, 19],\n [20, 21, 22, 23, 24]])" }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#生成一维序列,再转换为ndarray\n", "np.arange(25).reshape(5,5)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": "array([[-0.17294533, 0.57664369, 0.90030628, -1.50687522],\n [ 0.44645627, -0.007905 , -0.52326875, -0.60296276],\n [ 0.90004056, 0.76595149, -0.51941328, 0.40380163],\n [-0.5386898 , 1.68159334, -0.07916927, -1.28261209]])" }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#也可以随机生成多维数组\n", "np.random.rand(3,4)\n", "#randn生成的数据符合正太分布\n", "np.random.randn(4,4)" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "data": { "text/plain": "array([12.0695157 , 15.28852086, 28.16887606, 23.78457455, 19.43228899,\n 19.4356459 , 29.21877117, 23.19956387, 19.72328742, 18.5866164 ,\n 23.65236814, 22.90528204, 14.61641437, 19.12403056, 18.71734194,\n 21.86738754, 12.61084045, 16.48857546, 10.13327166, 29.18626043,\n 13.52597009, 25.3757283 , 15.02568918, 17.58892082, 29.02929713,\n 19.31601472, 18.70991889, 27.60091717, 17.90855395, 22.32056116,\n 29.66164178, 15.80899303, 13.42051403, 21.63006552, 27.3575489 ,\n 19.15324054, 11.6461633 , 15.2618994 , 17.25711308, 11.15194372,\n 24.7998248 , 20.68732859, 19.61350829, 13.52628516, 20.93910938,\n 18.22947301, 22.55097367, 19.83017006, 28.02903298, 21.88747298,\n 25.62843102, 25.9743397 , 28.41009972, 19.96665695, 12.90643362,\n 10.53082376, 25.83417207, 14.47090988, 12.30504558, 25.61192155,\n 29.43102168, 17.16377112, 25.98836525, 10.56868229, 19.95139715,\n 10.80447219, 18.29030416, 16.87592569, 25.22108043, 25.97517119,\n 13.60687878, 15.40081725, 18.56386783, 29.06878897, 25.60131042,\n 18.75444808, 13.6712598 , 20.53491322, 20.62849974, 24.44350913,\n 22.15870654, 25.66238923, 14.30747784, 20.37187352, 24.98596286,\n 18.57617349, 10.26463449, 11.84077318, 23.86112526, 11.08118911,\n 26.51167248, 19.01538728, 18.25704808, 10.36148126, 10.69855404,\n 18.29660878, 14.1800761 , 27.21586491, 20.89498324, 13.51931409])" }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#区间采样:[start, end]\n", "np.random.uniform(10, 30, 100)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": "array([[1., 1.],\n [1., 1.]])" }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#全为1的数组\n", "np.ones((2,2))" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": "array([[0., 0.],\n [0., 0.]])" }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#全为0的数组\n", "np.zeros((2,2))" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": "array([[0., 1., 0., 0., 0.],\n [0., 0., 1., 0., 0.],\n [0., 0., 0., 1., 0.],\n [0., 0., 0., 0., 1.],\n [0., 0., 0., 0., 0.]])" }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#对角矩阵\n", "np.eye(5, 5, 1)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": "array([ 0, 6, 12, 18, 24])" }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#获取对角元素\n", "np.diag(np.arange(25).reshape(5,5))" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": "array([[ 2104., 399900.],\n [ 1600., 329900.],\n [ 2400., 369000.],\n [ 1416., 232000.],\n [ 3000., 539900.],\n [ 1985., 299900.],\n [ 1534., 314900.],\n [ 1427., 198999.],\n [ 1380., 212000.],\n [ 1494., 242500.],\n [ 1940., 239999.],\n [ 2000., 347000.],\n [ 1890., 329999.],\n [ 4478., 699900.],\n [ 1268., 259900.],\n [ 2300., 449900.],\n [ 1320., 299900.],\n [ 1236., 199900.],\n [ 2609., 499998.],\n [ 3031., 599000.],\n [ 1767., 252900.],\n [ 1888., 255000.],\n [ 1604., 242900.],\n [ 1962., 259900.],\n [ 3890., 573900.],\n [ 1100., 249900.],\n [ 1458., 464500.],\n [ 2526., 469000.],\n [ 2200., 475000.],\n [ 2637., 299900.],\n [ 1839., 349900.],\n [ 1000., 169900.],\n [ 2040., 314900.],\n [ 3137., 579900.],\n [ 1811., 285900.],\n [ 1437., 249900.],\n [ 1239., 229900.],\n [ 2132., 345000.],\n [ 4215., 549000.],\n [ 2162., 287000.],\n [ 1664., 368500.],\n [ 2238., 329900.],\n [ 2567., 314000.],\n [ 1200., 299000.],\n [ 852., 179900.],\n [ 1852., 299900.],\n [ 1203., 239500.]])" }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#numpy提供了直接加载cvs格式数据的接口。delimiter是指定分隔符,usecols指定选择数据的列\n", "filename = 'ex1data2.txt'\n", "np.loadtxt(filename, delimiter=',', usecols=(0, 2))" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": "array([[ 0, 1],\n [ 5, 6],\n [10, 11],\n [15, 16],\n [20, 21]])" }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#切片,同样适用于dnarray,list切片语法为[start : end : step],应用到多维则是[start : end : step, start : end : step, ……]\n", "dnarr = np.arange(25).reshape(5,5)\n", "#选取头两列、所有行的数据\n", "dnarr[:, :2]" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": "array([ 5, 11, 15, 21])" }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#坐标为数组\n", "x = [1, 2, 3, 4]\n", "y = [0, 1, 0, 1]\n", "dnarr[x, y]" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": "array([[ 1, 2, 3],\n [11, 12, 13],\n [21, 22, 23],\n [31, 32, 33]])" }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式,当运算中的 2 个数组的形状不同时,numpy 将自动触发广播机制\n", "a = np.array([[ 0, 0, 0],\n", " [10,10,10],\n", " [20,20,20],\n", " [30,30,30]])\n", "b = np.array([1,2,3])\n", "a + b" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": "array([[ 0, 10, 20, 30],\n [ 0, 10, 20, 30],\n [ 0, 10, 20, 30]])" }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#翻转矩阵\n", "a.T" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/plain": "array([[2.37861674, 2.24048424, 2.06956704],\n [2.21845504, 2.45944021, 2.56521539],\n [2.72539798, 2.51533669, 2.7490997 ]])" }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#数组的运算,对数组中的所有元素进行计算,非常方便\n", "a = np.random.rand(3,3)\n", "b = np.random.rand(3,3)\n", "a + b\n", "a - b\n", "a * b\n", "a / b\n", "a * 2\n", "a + 2" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "text/plain": "array([0.12640543, 0.14510723, 0.10505695])" }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#统计函数\n", "\n", "#按轴统计最大最小值\n", "np.amax(a, 1)\n", "np.amin(a, 0)\n", "\n", "#最大最小差值\n", "np.ptp(a, 0)\n", "#中位数\n", "np.median(a, 1)\n", "#平均值\n", "np.mean(a, 1)\n", "\n", "#方差\n", "np.var(a, 1)\n", "#标准差\n", "np.std(a, 1)\n" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "data": { "text/plain": "matrix([[0.51150901, 0.0553782 , 0.99089512],\n [0.51719364, 0.00331011, 0.08076412],\n [0.66316065, 0.94387314, 0.30780752]])" }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#矩阵\n", "import numpy.matlib \n", "\n", "numpy.matlib.rand(3,3)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ] }