如何用numpy中沿着另一个轴的向量除一个矩阵?

c9x0cxw0  于 2023-03-02  发布在  其他
关注(0)|答案(1)|浏览(128)

我有一个n x n矩阵,p,我想除以一个n x 1向量,q。当使用p/q(或等效的np.divide(p,q))时,它将每行视为一个行向量,并将每一个元素除以 q。我想要类似的东西,但列而不是行(即 p 的每行应该除以 q 的相应元素,a la p[i,:]/q[i])。
我试过用一个循环,这很简单,但是n的大小太大了,这不可行。
否则,我只找到了np.divide(),它没有axis关键字。

0pizxfdo

0pizxfdo1#

您可能需要查看文档的broadcasting section
下面是一个演示:

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.        ]]

相关问题