Почему функция Numpy Diag ведет себя странно?

Функция diag не сохраняет результат в переменную.

import numpy as np
A = np.random.rand(4,4)
d = np.diag(A)

print d
# above gives the diagonal entries of A

# let us change one entry
A[0, 0] = 0

print d
# above gives updated diagonal entries of A

Почему функция diag ведет себя таким образом?


person Shishir Pandey    schedule 15.02.2015    source источник


Ответы (1)


np.diag возвращает представление к исходному массиву. Это означает, что более поздние изменения исходного массива отражаются в представлении. (Преимущество, однако, заключается в том, что операция выполняется намного быстрее, чем создание копии.)

Обратите внимание, что это поведение только в некоторых версиях numpy. В других случаях возвращается копия.

Чтобы "заморозить" результат, вы можете скопировать его как d = np.diag(A).copy()

person shx2    schedule 15.02.2015