我有一个不寻常的问题,在numpy数组洗牌
arr = np.arange(9).reshape((3, 3))
print "Original constant array"
print arr
new_arr=arr
for i in range(3):
np.random.shuffle(new_arr)
print "Obtained constant array"
print arr
print "randomized array"
print new_arr
arr
是我的原始数组,我保留了它并创建了新的数组new_arr
以供进一步计算。但是代码显示了这个输出
Original constant array
[[0 1 2]
[3 4 5]
[6 7 8]]
Obtained constant array
[[6 7 8]
[0 1 2]
[3 4 5]]
randomized array
[[6 7 8]
[0 1 2]
[3 4 5]]
我只想随机化new_arr
,而不是arr
。为什么会发生这种情况,以及如何防止arr
洗牌?你知道吗
使用
而不是
执行
new_arr=arr
时,基本上是为数组arr
创建一个引用new_arr
例如(取自numpy copy docs):
当你说
new_arr=arr
时,它复制引用而不是深度复制。当你改变arr时,它也改变了新的arr。你知道吗试试
new_arr = np.copy(arr)
。这应该管用。你知道吗相关问题 更多 >
编程相关推荐