我具有形状为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]
之类的方法,但始终会出错。
有更有效的方法吗?
这里是一种方法-
(A*V[:,None,None])/V[:,None]
或者,分两个步骤-
A *= V[:,None,None]
A /= V[:,None]