【发布时间】:2022-09-28 03:51:01
【问题描述】:
我有一个 4x4 数组 A1,需要在不循环或调用 np.diag() 的情况下检索其对角线元素。这样做的方法是什么?感谢你的帮助!
A1 = np.array([ [1, 4, 6, 8],[2, 5, 7, 10],[3, 6, 9, 13], [11, 12, 16, 0]])
-
np.diag() 是最明智的解决方案。你为什么拒绝它?
标签: python arrays numpy loops diagonal
我有一个 4x4 数组 A1,需要在不循环或调用 np.diag() 的情况下检索其对角线元素。这样做的方法是什么?感谢你的帮助!
A1 = np.array([ [1, 4, 6, 8],[2, 5, 7, 10],[3, 6, 9, 13], [11, 12, 16, 0]])
标签: python arrays numpy loops diagonal
通过使用对角线的索引进行索引,这些对角线是单位矩阵的非零点的索引。
import numpy as np
A1 = np.array([ [1, 4, 6, 8],[2, 5, 7, 10],[3, 6, 9, 13], [11, 12, 16, 0]])
diag_pos = np.eye(A1.shape[0],dtype=bool).nonzero()
print(A1[diag_pos])
[1 5 9 0]
【讨论】:
(4,4),[0] 只是获取第一个4,因为这个函数只需要一个数字而不是两个,至于dtype=bool 你可以省略它并且代码将起作用,它只是通过在内存中使用较小的大小(布尔值而不是浮点数)使这段代码稍微快一些,这并不重要。