У меня есть некоторые ограничения вида
A_{i,j,k} = r_{i,j}B_{i,j,k}
A
- матрица nxmxp
, как и B. r
- матрица nxm
.
Я хотел бы как-то векторизовать это в Python максимально эффективно. Прямо сейчас я превращаю r
в nxmxp
матрицу, говоря r_{i,j,k} = r_{i,j} for all 1 <= k <= p
. Затем я звоню np.multiply
на r
и B
. Это кажется неэффективным. Любые идеи приветствуются, спасибо.
def ndHadamardProduct(r, n, m, p): #r is a n x m matrix, p is an int
rnew = np.zeros(n, m, p)
B = np.zeros(n, m, p)
for i in range(n):
for j in range(m):
for k in range(p):
r[i, j, k] = r[i, j]
B[i, j, k] = random.uniform(0, 1)
return np.multiply(r, B)