python - numpy - 对整个矩阵的运算

标签 python arrays 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))

但我不确定这是否是一种特别有效的方法。有什么建议吗?

最佳答案

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

关于python - numpy - 对整个矩阵的运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21357370/

相关文章:

python - 通过文件名通配符打开文件

php - 谁能用 PHP -> $a{0} = "value"解释这个数组声明

python - 将散点数据转换为误差条等于标准差的分箱数据

python - numpy - 转换具有不同 x 和 y 的二维数组?

macos - Numpy 和 Pandas 在 Mac 上的 Jupyter Notebook 中不起作用

python - 组合数组以产生新的集体数组

python - 如何使用 str.replace 一次替换多个对?

python:如何从 HKLM 中删除注册表项(和子项)(出现错误 5)

python - 用字符串替换文本文件列中的值

c - 长度为4-20的数组?