python - 在numpy中绘制相同的随机数

标签 python numpy random random-seed

我得到了以下代码:

import numpy as np
rand_draw1 = np.random.rand(5,4)
rand_draw2 = rand_draw1
rand_draw2[0:2,0:4] = np.random.rand(2,4)

我的意图是让变量 rand_draw1 和 rand_draw2 除前两行外完全相同。然而,它们完全相同,甚至前两行也是如此。

最初我认为这个问题回答了我的问题: Random Number Generation - Same Number returned 这表明这一定是由于这些随机抽取是基于机器时钟这一事实,并且由于命令是在几乎相同的实例中执行的,所以人们抽取了相同的数字。但如果是这样,为什么我在终端中运行它会得到相同的结果(即逐行输入)?

总而言之,我有两个问题: - 如何修复我的代码? - 是否确实是机器时间“问题”导致的?

提前致谢!

最佳答案

只是分配 rand_draw2 = rand_draw1不会创建副本,它只是将名称 rand_draw2 绑定(bind)到相同的对象 已经绑定(bind)到 rand_draw1:

>>> rand_draw2 = rand_draw1
>>> rand_draw2 is rand_draw1
True

相反,您需要显式复制 rand_draw1,并将copy分配给rand_draw2:

>>> rand_draw1 = np.random.rand(5, 4)
>>> rand_draw2 = rand_draw1.copy()
>>> rand_draw2[0:2] = np.random.rand(2, 4)
>>> rand_draw1
array([[ 0.08254004,  0.51848814,  0.69348487,  0.44053008],
       [ 0.75273107,  0.64677024,  0.78397813,  0.12768647],
       [ 0.37552669,  0.8365069 ,  0.44490398,  0.3943413 ],
       [ 0.27263619,  0.40379047,  0.43227555,  0.61552473],
       [ 0.55214161,  0.21380748,  0.34122889,  0.44029075]])
>>> rand_draw2
array([[ 0.26229975,  0.02754367,  0.7989174 ,  0.94619982],
       [ 0.40869498,  0.01327566,  0.06437938,  0.94647506],
       [ 0.37552669,  0.8365069 ,  0.44490398,  0.3943413 ],
       [ 0.27263619,  0.40379047,  0.43227555,  0.61552473],
       [ 0.55214161,  0.21380748,  0.34122889,  0.44029075]])

参见例如here以很好地解释 Python 中的名称是如何工作的。

关于python - 在numpy中绘制相同的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25076440/

相关文章:

python - 选择控制台后,如何让主窗口出现在最前面?

python - 将数据帧转换为 pandas.io.parsers.TextFileReader 对象( block )

python - 确定 jitclass 方法的输入参数类型

python - 生成具有数字范围的条件组合的数据框

python - 为什么我的 NumPy 日志空间给我一个无穷大数组?

C# Monte Carlo Incremental Risk Calculation 优化,随机数,并行执行

python - 随机选择在这种情况下不起作用?

python - Pandas JSON 嵌套

python - 在 Travis CI 中缓存从源构建的依赖项有多安全

java - C 或 Java (Android) 中的任何函数都可能搞乱 srand()?