考虑一个包含正数的方阵,以形状为 ((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 的内存开销较小,因此我认为会更快。
