我得到以下代码:
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相同,除了前两行。但是,即使是前两行,它们也完全相同。
最初我以为这个问题可以解决我的问题:随机数生成-返回相同的数字,这表明这一定是由于以下事实:这些随机绘制基于机器时钟,并且由于命令实际上是在同一实例中执行的,因此绘制一次相同的数字。但是,如果是这种情况,为什么我在终端上运行该程序也得到相同的结果(即,一行一行地键入)?
总而言之,我有两个问题:-如何修复代码?-确实是机器时间的“问题”导致了这一点吗?
提前致谢!
仅分配rand_draw2 = rand_draw1
不会创建副本,它只是将名称绑定到已经绑定到rand_draw2
的同一对象rand_draw1
:
>>> rand_draw2 = rand_draw1
>>> rand_draw2 is rand_draw1
True
相反,您需要显式复制 rand_draw1
,并将副本分配给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]])
请参见例如此处,以获取有关Python中名称如何工作的良好解释。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句