任何人都可以解释一下numpy.swapaxes的以下行为:
import numpy as np
from copy import deepcopy
n = 10 # Works fine, but doesn't if set n = 100
x = rand.uniform(size=(n, n, n))
x0 = deepcopy(x)
x += np.swapaxes(x, 0, 1) # Works fine if do x = x + np.swapaxes(x, 0, 1) instead...
temp = x0 + np.swapaxes(x0, 0, 1)
print np.linalg.norm(x - temp)
n = 10
时打印的错误为零,而n = 1000
时则不是。为什么会这样?如果我们执行x = x + np.swapaxes(x, 0, 1)
而不是x += np.swapaxes(x, 0, 1)
,代码也可以正常运行。 (调试非常令人沮丧,因为代码适用于小样本......)
答案 0 :(得分:1)
问题出现是因为您修改了正在阅读的数据......
您将了解问题here。
一些摘录:
智慧规则:永远不要修改你正在阅读的数据。