Numpy, изменение формы массива с помощью оператора присваивания для атрибута shape ведет себя иначе, чем когда используется изменение формы - PullRequest
0 голосов
/ 07 апреля 2019

Я был озадачен различным поведением следующих двух способов изменить форму массивов numpy:

x.shape = (3,4)    
x = x.reshape(3,4)

Вот пример:

In [1]: import numpy as np
##### Case 1
In [2]: fa = np.arange(12).reshape(4,3)
In [3]: x = fa
In [4]: x is fa
Out[4]: True
In [5]: x.shape = (3,4)         # RESHAPING does not affect x 
In [6]: x is fa
Out[6]: True
########Case 2 ########
In [7]: fa = np.arange(12).reshape(4,3)
In [8]: x = fa
In [11]: x.reshape(3,4) is fa   # RESHAPING makes x a shallow copy
Out[11]: False
########Verify x is shallow copy
In [13]: fa = np.arange(12).reshape(4,3)
In [14]: x.reshape(3,4).base is fa.base
Out[14]: True

Я не могу понять, почему в первом случае изменения формы x остается таким же, как fa, но во втором случае после изменения формы x становится мелкой копией fa.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...