Skip to main content
 首页 » 编程设计

python之规范化二维数组

2025年05月04日22langtianya

考虑一个包含正数的方阵,以形状为 ((m,m)) 的二维 numpy 数组 A 给出。我想构建一个与条目具有相同形状的新数组 B

B[i,j] = A[i,j] / (np.sqrt(A[i,i]) * np.sqrt(A[j,j])) 

一个明显的解决方案是遍历所有 (i,j),但我想知道是否有更快的方法。

请您参考如下方法:

利用 broadcasting 的两种方法可以建议。

方法 #1:

d = np.sqrt(np.diag(A)) 
B = A/d[:,None] 
B /= d 

方法 #2:

B = A/(d[:,None]*d) # d same as used in Approach #1 

方法 #1 的内存开销较小,因此我认为会更快。