2

我一直在考虑这个问题,但我无法理解这里发生了什么......希望这是简单的事情?在下面的输出中,我希望“c”的第二个条目的第一个元素中有一个“41”。

>>> a = np.zeros(shape = (2,2))
>>> b = np.zeros(shape = (2,2))
>>> c = [np.array(x) for x in range(3)]
>>> c[1] = np.zeros(shape=(2,2,3))
>>> c[1][:,:,0] = a.view()
>>> a
array([[ 0.,  0.],
       [ 0.,  0.]])
>>> c
[array(0), array([[[ 0.,  0.,  0.],
                   [ 0.,  0.,  0.]],

                  [[ 0.,  0.,  0.],
                   [ 0.,  0.,  0.]]]), array(2)]
>>> a[0,0] = 41
>>> a
array([[ 41.,   0.],
       [  0.,   0.]])
>>> c
[array(0), array([[[ 0.,  0.,  0.],
                   [ 0.,  0.,  0.]],

                  [[ 0.,  0.,  0.],
                   [ 0.,  0.,  0.]]]), array(2)]
4

1 回答 1

3

因为你做了:

c[1][:,:] = a.view()

这会产生浅拷贝。

如果你这样做c[1] = a.view()了,你会看到你期望的行为。

于 2013-02-01T00:10:27.200 回答