簡體   English   中英

不要評估矩陣 Python 的對角線

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM