[英]In Python, how can I raise a square matrix represented as a numpy.ndarray to non-integer powers?
假設我有一個方形矩陣,可以提升到-1/2的功率。 我想將表示為numpy.ndarray
的方陣提高到-1/2。
注意我想將矩陣提升為非整數冪。 我不希望將矩陣的每個元素提升為非整數冪。
我知道我可以使用numpy.linalg.matrix_power
將矩陣提升為整數冪,如如何將numpy數組提升為冪?
如何將numpy.ndarray
提升為非整數冪?
SciPy有scipy.linalg.sqrtm
,它計算矩陣平方根。 目前尚不清楚它是否試圖計算任何特定的平方根 - 例如,主平方根 - 但如果輸入具有平方根,則sqrtm
將計算一個。 因此,你可以做到
invsqrt = scipy.linalg.sqrtm(scipy.linalg.inv(input_matrix))
雖然你可能想要做一些錯誤處理。
無法保證可以將一般nxn矩陣提升到給定的非整數冪。 此操作是針對正整數冪定義的,並且使用Maclaurin系列,您可以定義矩陣指數函數以近似矩陣的其他函數。
然而,為了能夠將矩陣提升到任意冪,你還必須對矩陣對數有一個連貫的定義,它只能為可逆矩陣定義明確,並且涉及一些關於唯一性和元素字段的微妙之處。定義。
這個math.stackexchange.com答案很好地涵蓋了這一點 。
所以一般來說,這不是對任意nxn矩陣的明確定義的操作,因此它作為ndarray
上的一般可用函數沒有意義。
這就像要求一個稱為“ inverse
”的函數來計算任意2D數組的逆(不是偽逆或任何近似,而是“實際”逆)。 這種功能通常不存在,因為存在不可逆的2D陣列。
這是一個狹隘的API決定,是否有一些聲稱計算它的函數,如果它可以檢測到無效的輸入參數,如numpy.linalg.inv
,只是拋出異常,而不是提供該功能並期望用戶編寫自己的函數來執行此操作並處理檢查參數有效性,引發異常或任何需要的故障情況行為。
inv
無處不在以保證這種努力,而開箱即用的任意權力則不然。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.