假设存在对角矩阵M:
#import numpy as np
M = np.matrix(np.eye(5, dtype=bool))
有没有人知道访问所有非对角线元素的简单方法,这意味着所有元素都是False
?在R
我可以通过执行
M[!M]
不幸的是,这在Python中无效。
答案 0 :(得分:8)
您需要按位运算符:
M[~M]
答案 1 :(得分:3)
您可以尝试将np.extract与np.eye结合使用。例如:
M = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
np.extract(1 - np.eye(3), M)
# result: array([2, 3, 4, 6, 7, 8])
在你的例子中,它几乎是一个身份:
M = np.matrix(np.eye(5, dtype=bool))
np.extract(1 - np.eye(5), M)
#result:
array([False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False,
False, False], dtype=bool)