python - 为什么 Numpy Diag 函数的行为很奇怪?

标签 python numpy diagonal

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 函数以这种方式运行?

最佳答案

np.diag返回原始数组的 View 。这意味着以后对原始数组的更改会反射(reflect)在 View 中。 (但是,好处是该操作比创建副本快得多。)

请注意,这只是某些版本的 numpy 中的行为。在其他情况下,返回副本。

要“卡住”结果,您可以像 d = np.diag(A).copy() 一样复制它

关于python - 为什么 Numpy Diag 函数的行为很奇怪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28530493/

相关文章:

python - 如何制作对角矩阵的掩码,但从第二列开始?

python - 在 Queue.Queue.get() 中阻塞时处理 SIGTERM

python - 如何在大数据框中对组内的行进行排序

python - 是否可以为类实例范围创建 pytest 固定装置?

python - 获取从索引到结束的数组元素

python - Scipy interp2d 插值屏蔽填充值

matlab - Matlab中的扩展分块对角矩阵

android - 自定义 View 可点击区域重叠

python - 将 POST 请求正文作为数组的 JSON 作为 flask-restful 中的根节点

python - 在Python中过滤具有特定要求的数据框