{ "cells": [ { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# numpy.random.RandomState()函数用法\n", "\n", "1. 使用numpy.random.RandomState(1).uniform(1,2,(3,4))函数生成一个3行4列的数组,其中每个元素都是在[1,2]区间内均匀分布的随机数\n", "这里 “1” 为随机数种子,只要随机数种子seed相同,产生的随机数系列就相同。" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "RandomState(MT19937) \n", "\n", "[[1.417022 1.72032449 1.00011437 1.30233257]\n", " [1.14675589 1.09233859 1.18626021 1.34556073]\n", " [1.39676747 1.53881673 1.41919451 1.6852195 ]]\n" ] } ], "source": [ "rdm = np.random.RandomState(1) # 定义一个随机数种子\n", "print(rdm,\"\\n\")\n", "a = rdm.uniform(1,2,(3,4)) # 产生一个3行4列的数组,其中每个元素都是在[1,2]区间内均匀分布的随机数\n", "print(a)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "2. 使用numpy.random.RandomState(1).rand(d0,d1,…,dn)函数生成一个给定维度的数组,其中每个元素在[0,1)之间(包含0,不包含1),dn表示各个维度,返回值为指定维度的array\n", " - rand(0):表示随机产生一个空数组。\n", " - rand(n):表示随机产生一个一维的,每个元素在[0,1)之间的n个数字的数组。\n", " - rand(m,n):表示随机产生一个m行n列的二维数组。\n", " - rand(d0,d1,…,dn):表示随机生成一个$d 0 × d 1 × ⋯ × d n d0×d1×\\cdots×dnd0×d1×⋯×dn$维度的数组。" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[] \n", "\n", "[0.90340192 0.1374747 0.13927635] \n", "\n", "[[0.80739129 0.39767684]] \n", "\n", "[[[0.1653542 0.92750858]\n", " [0.34776586 0.7508121 ]\n", " [0.72599799 0.88330609]\n", " [0.62367221 0.75094243]]\n", "\n", " [[0.34889834 0.26992789]\n", " [0.89588622 0.42809119]\n", " [0.96484005 0.6634415 ]\n", " [0.62169572 0.11474597]]\n", "\n", " [[0.94948926 0.44991213]\n", " [0.57838961 0.4081368 ]\n", " [0.23702698 0.90337952]\n", " [0.57367949 0.00287033]]] \n", "\n" ] } ], "source": [ "a = rdm.rand(0) #生成一个空数组\n", "b = rdm.rand(3) # 生成一个一维的,每个元素在[0,1)之间的3个数字的数组\n", "c = rdm.rand(1,2) # 随机产生一个1行2列的,每个元素在[0,1)之间的二维数组\n", "d = rdm.rand(3,4,2) # 生成一个3×4×2维度的,每个元素在[0,1)之间的三维数组\n", "print(a,\"\\n\")\n", "print(b,\"\\n\")\n", "print(c,\"\\n\")\n", "print(d,\"\\n\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " ## 基于 numpy.random.RandomState(int).rand(d0,d1,…,dn) 与基于numpy.random.rand(d0,d1,…,dn),生成随机数组的区别\n", " 使用RandomState(int)可以自定义随机数种子,以保证每次执行代码,生成的数组都相同。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## numpy里random总结:\n", "\n", "1. np.random.randn()\n", "语法: numpy.random.randn(d0,d1,…,dn)\n", "功能: 用法同np.random.rand()一样,只是服从正态分布。用法同上。\n", "说明:\n", "标准正态分布又称为u分布,是以0为均值、以1为标准差的正态分布,记为N(0,1)。\n", "randn函数返回一个或一组样本,具有标准正态分布。\n", "dn表格每个维度\n", "返回值为指定维度的array\n", "\n", "2. np.random.randint()\n", "语法: numpy.random.randint(low, high=None, size=None, dtype=’l’)\n", "功能: 通过low来指定起点,通过high来指定终点,通过size参数来指定数组的维度,通过dtype来确定类型。\n", "说明:\n", "返回值为随机整数,范围区间为[low,high),包含low,不包含high\n", "参数:low为最小值,high为最大值,size为数组维度大小,dtype为数据类型,默认的数据类型是np.int\n", "high没有填写时,默认生成随机数的范围是[0,low)\n", "\n", "3. np.random.random(size=None)\n", "语法: numpy.random.random(size=None)\n", "功能: 生成[0,1)之间的浮点数,通过size参数来指定维数。\n", "说明:\n", "size : int or tuple of ints, optional.\n", "Output shape. If the given shape is, e.g., (m, n, k), then m * n * k samples are drawn. Default is None, in which case a single value is returned. " ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0 0 0 0] \n", "\n", "[[ 0 -2 0]\n", " [ 1 -1 -1]] \n", "\n", "0.0940234518052504 \n", "\n", "[0.58264778] \n", "\n", "[0.19358132 0.3565561 ] \n", "\n", "[[0.32759701 0.74016873 0.83999783]\n", " [0.62572959 0.13477642 0.86937912]] \n", "\n" ] } ], "source": [ "y1 = np.random.randint(1,size=4)\n", "print(y1,\"\\n\") #返回[0,1)之间的整数,只有0\n", "y2 = np.random.randint(-2,3,size=(2,3))\n", "print(y2,\"\\n\") #输出为每个元素在[-2,3)之间的整数,维度为2×3的数组\n", "\n", "z1 = np.random.random() #生成单个数字\n", "print(z1,\"\\n\")\n", "z2 = np.random.random(1) #生成一维的数组\n", "print(z2,\"\\n\")\n", "z3 = np.random.random(2) #生成1×2的数组\n", "print(z3,\"\\n\")\n", "z4 = np.random.random((2,3)) #生成一个2行3列的数组\n", "print(z4,\"\\n\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.9.13 ('gym')", "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.9.13" }, "orig_nbformat": 4, "vscode": { "interpreter": { "hash": "eb62451c918ef6a4174992a3510c06ea27ba0bc2fc5ee7a9f470b6f52b0b170f" } } }, "nbformat": 4, "nbformat_minor": 2 }