2024-04-26 11:49:57 发布
网友
考虑包含正数的平方矩阵,作为二维numpy数组a的形状((m,m))。我想构建一个新的数组B,它的形状与条目相同
B[i,j] = A[i,j] / (np.sqrt(A[i,i]) * np.sqrt(A[j,j]))
一个明显的解决方案是循环所有(i,j),但我想知道是否有更快的方法。
可以提出两种利用^{}的方法。在
方法1:
d = np.sqrt(np.diag(A)) B = A/d[:,None] B /= d
方法2:
方法1的内存开销较小,因此我认为速度会更快。在
您可以通过使用
b = np.sqrt(np.diag(a)) a / b[:, None]
此外,还可以使用
就像你的问题所问的那样,使用
a / (b[:, None] * b[None, :])
如果要防止创建中间数组并就地执行操作,可以使用
a /= b[:, None] a /= b[None, :]
可以提出两种利用^{} 的方法。在
方法1:
方法2:
^{pr2}$方法1的内存开销较小,因此我认为速度会更快。在
您可以通过使用
此外,还可以使用
^{pr2}$就像你的问题所问的那样,使用
如果要防止创建中间数组并就地执行操作,可以使用
相关问题 更多 >
编程相关推荐