簡體   English   中英

numpy-整個矩陣的運算

[英]numpy - operations on whole matrix

說我有一個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))

但我不確定這是否是一種特別有效的方法。 有什么建議嗎?

import numpy as np

a = np.array([[11, 12, 13],
          [21, 22, 23],
          [31, 32, 33]], float)

a / np.sum(a**2, 1, keepdims=True)**0.5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM