[英]Do not evaluate the diagonal of a matrix Python
我正在制作一個將元素A[i,j]
與A[j,i]
進行比較的程序,如果一旦A[i,j] = A[j,i]= 1
為真,則矩陣將不會是反對稱。 在比較中,不應評估i=j
(矩陣的對角線)的元素A[i,j]
。
import numpy as np
A = np.array([[1,0,0],[0,0,0],[0,0,1]])
for i in range (0,2):
for j in range (0,2):
if A[i,j] ==1 and A[i,j] == A[j,i]:
print('A is not antisymmetric')
antisymmetric = False
break
我試圖添加條件i != j
以不評估對角線,但它沒有奏效
看起來您的原始示例有錯字,因為您正在檢查矩陣的值實際上是1
,這與反對稱矩陣無關?
你追求的是:
import numpy as np
def is_antisymmetric(a):
r, c = a.shape
if r != c:
return False
for i in range(r):
for j in range(c):
if a[i, j] != -a[j, i] and j != i:
return False
return True
print(is_antisymmetric(np.array(
[[1,0,-1], [0,0,0], [1,0,1]]
)))
或者,簡而言之:
def is_antisymmetric(a):
return (
(s := a.shape[0]) == a.shape[1] and
(all(a[i, j] == -a[j, i] or j == i for i in range(s) for j in range(s)))
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.