Python “的含义;2*np.random.rand(100,1)“;
我是个编程行家。Python “的含义;2*np.random.rand(100,1)“;,python,numpy,random,Python,Numpy,Random,我是个编程行家。 我试着在一本书中运行一个简单的线性回归示例。Y=4*X+6 我已经设置了np.random.seed(0) 创建X时,书中的代码使用了2*np.random.rand(100,1) 我用下面的方法创建了X1,X2,X3。下面是代码 import numpy as np np.random.seed(0) X1 = 2 * np.random.rand(5,1) X2 = np.random.rand(5,1) X3 = 2 * X2 print('X1= ',
我试着在一本书中运行一个简单的线性回归示例。Y=4*X+6
我已经设置了
np.random.seed(0)
创建X时,书中的代码使用了
2*np.random.rand(100,1)
我用下面的方法创建了X1,X2,X3。下面是代码
import numpy as np
np.random.seed(0)
X1 = 2 * np.random.rand(5,1)
X2 = np.random.rand(5,1)
X3 = 2 * X2
print('X1= ', X1)
print('X2= ', X2)
print('X3= ', X3)
我这里有问题
random
在连续两次调用中返回相同的值?那么,这个序列很难是随机的
X2
值介于0和1之间X3
值是X2值的两倍,介于0和2之间X1
值是不同的数字,但也在0和2之间。我猜您希望np.random.rand()返回相同的值,因为您正在设置种子。这是一种误解。设置种子一次意味着,从它们开始,它将返回一系列随机值。如果随后再次设置相同的种子,它将随后返回相同的序列。请尝试以下方法:
np.random.seed(0)
X1 = np.random.rand(5,1)
np.random.seed(0)
X2 = np.random.rand(5,1)
X1将等于X2,因为每个都是与种子0相关联的序列的开始
现在,试试这个:
np.random.seed(0)
X1 = np.random.rand(5,1)
Y1 = np.random.rand(5,1)
np.random.seed(0)
X2 = np.random.rand(5,1)
Y1 = np.random.rand(5,1)
现在X1=X2,Y1=Y2。但是X1!=Y1(除非你随机画两次相同的东西)
要回答第一个问题,是的——将随机抽取的结果乘以2,因此它现在将返回0到2的元素,而不是0到1的元素
现在,您可能需要两个相同的随机数生成器,而无需每次重置种子。如果是这种情况,请初始化两个numpy.random.RandomState:
或者他们的新发电机。然后,您可以使用相同的种子对它们进行初始化,并从一个种子中提取一段时间,然后从该种子的随机序列中“更早”的另一个种子中提取
它应该只是将所有值加倍。X1和X3是不同的,因为每次调用
np.random.rand()
都会得到不同的随机数组。在分配X2之前再次调用np.random.seed(0)
,那么X1
和X3
将是相同的。
np.random.seed(0)
X1 = np.random.rand(5,1)
Y1 = np.random.rand(5,1)
np.random.seed(0)
X2 = np.random.rand(5,1)
Y1 = np.random.rand(5,1)