a =np.ones((100,100))
a += a.T
a
我不明白为什么矩阵中有一些3.为什么所有数字都不是2.?
答案 0 :(得分:2)
a
和a.T
是同一数据的两个视图。在早期的NumPy版本中,当你做
a += a.T
过程中较早发生的单元更新可能导致以后的添加操作使用更新的值而不是原始值。例如,作为a += a.T
的一部分,NumPy可能会执行a[0, 99] += a[99, 0]
更新a[0, 99]
,然后执行a[99, 0] += a[0, 99]
更新a[99, 0]
,使用新值{ 2代表a[0, 99]
而非原始值1。
NumPy 1.13 changes the semantics,保证将使用原始值,因此您不会在更新版本的NumPy中看到此问题。