如何在 numpy 中将矩阵除以沿另一个轴的向量?

问题描述 投票:0回答:1

我有一个 n x n 矩阵,p,我想除以一个 n x 1 向量,q。当使用 p/q(或等效的 np.divide(p,q))时,它将每一行视为一个行向量,并用 q 按元素划分每一行。我想要一个类似的东西,但列而不是行(即 p 的每一行应该除以 q 的相应元素,la

p[i,:]/q[i]
)。

我试过使用一个相当简单的循环,但是 n 的大小太大了,这在未来是可行的。

否则,我只真正找到了 np.divide() 并且没有

axis
关键字。

numpy numpy-ndarray
1个回答
1
投票

您可能想查看文档的广播部分

这里是演示:

import numpy as np

N = 3

p = np.arange(N * N).reshape(N, N) + 1
q = np.arange(N) + 1

q1N = q[None, :]  # q.reshape(1, N)
qN1 = q[:, None]  # q.reshape(N, 1)

那么你有:

>>> p
[[1 2 3]
 [4 5 6]
 [7 8 9]]

>>> q
[1 2 3]

>>> p / q
[[1.  1.  1. ]
 [4.  2.5 2. ]
 [7.  4.  3. ]]

>>> p / q1N
[[1.  1.  1. ]
 [4.  2.5 2. ]
 [7.  4.  3. ]]

>>> p / qN1
[[1.         2.         3.        ]
 [2.         2.5        3.        ]
 [2.33333333 2.66666667 3.        ]]
© www.soinside.com 2019 - 2024. All rights reserved.