Numpy广播3-d矩阵和1d向量

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

我具有形状为A的矩阵(N, N, T)。然后我有一个V形状为(N,)的向量。我要执行以下操作A[i, j, ...] = A[i, j, ...]*V[i]/V[j]。我正在通过以下循环进行此操作,但是请确保有一种方法可以通过广播来完成。

A = np.random.randint(0, 5, (2, 2, 3))
V = np.array([2, 3]) 

for i in range(2):
    for j in range(2):
        A[i, j, ...] *= V[i]
        A[i, j, ...] /= V[j]

我已经考虑过通过元素方式的乘法和numpy的广播来做到这一点,我尝试使用A * V[:, None, None]之类的方法,但始终会出错。

有更有效的方法吗?

python numpy matrix-multiplication
1个回答
0
投票

这里是一种方法-

(A*V[:,None,None])/V[:,None]

或者,分两个步骤-

A *= V[:,None,None]
A /= V[:,None]
© www.soinside.com 2019 - 2024. All rights reserved.