a
是一个numpy数组,而a.T
是它的转置。将a
和a.T
添加为a += a.T
后,答案就不会出现。谁能告诉我为什么?感谢。
import numpy
a = numpy.ones((100, 100))
a += a.T
a
array([[ 2., 2., 2., ..., 2., 2., 2.],
[ 2., 2., 2., ..., 2., 2., 2.],
[ 2., 2., 2., ..., 2., 2., 2.],
...,
[ 3., 3., 3., ..., 2., 2., 2.],
[ 3., 3., 3., ..., 2., 2., 2.],
[ 3., 3., 3., ..., 2., 2., 2.]])
答案 0 :(得分:8)
请注意,a.T
只是a
上的一个视图,这意味着它们拥有相同的数据。现在:
a += a.T
向a.T
添加a
,但在执行此操作时,更改a.T
(因为a.T
指向相同的数据)。由于访问a
的顺序有点复杂,因此失败(您不应该相信结果是可重现的,因为当您更改np.setbufsize
时它会发生变化。
为了避免这一点,这两个都可行,但第一个版本对我来说似乎更清晰。
a = a + a.T
a += a.T.copy()