我有一个 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
关键字。
您可能想查看文档的广播部分。
这里是演示:
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. ]]