1
说我有一个numpy的阵列numpy的 - 对整个矩阵运算
a = np.array([[a11 a12 a13],
[a21 a22 a23],
[a31 a32 a33]])
我想返回以下结果:
np.array([[a11/a1 a12/a1 a13/a1],
[a21/a2 a22/a2 a23/a2],
[a31/a3 a32/a3 a33/a3]])
其中:
a1 = np.sqrt(a11**2 + a12**2 + a13**2)
a2 = np.sqrt(a21**2 + a22**2 + a23**2)
a3 = np.sqrt(a31**2 + a32**2 + a33**2)
换句话说,我想按照它所属行的标准划分数组的每个元素。
我已经写了一些代码来做到这一点,但它是坦率的可怕的 - 我循环了数组的行,我知道这不是按照设计的numpy。我有一种感觉,可以通过使用两个我刚刚不知道的numpy库调用来实现。
我想起了另一件事是:
a/np.reshape(np.linalg.norm(a,axis=1),(a.shape[0],1))
,但我不知道这是一个特别有效的方法。有什么建议?
需要sqrt不是sum,sqrt似乎没有方便的axis或keepdims命令。 – user1654183
我修改了答案,只需添加'** 0.5'。 – HYRY
非常好的解决方案!谢谢 – user1654183