I want to perform this code in a vectorized way.
- Turn each element of this list of lists,
comboArray
, into a matrix.
- The elements of these matrices are indexes of X
- I need to take the sum of product of the column indices of X.
For example, if comboArray = [[1, 2], [3, 4]]
, then I want
X[1] * X[2] + X[3] * X[4]
I'm having a lot of trouble figuring how to get rid of the for loop and do this with only products of matrices and arrays.
Here is an example:
comboArray = [
[[1, 2]],
[[1, 3]],
[[2, 3], [1, 4]],
[[1, 5], [2, 4]],
[[3, 4], [2, 5], [1, 6]]
]
X = np.random.rand(10)
for i in range(len(comboArray)):
gg = np.asarray(comboArray[i])
out += np.sum( X[gg[:, 0]] * X[gg[:, 1]] )
question from:
https://stackoverflow.com/questions/66054794/trying-to-vectorize-in-python-list-of-variable-row-matrices-as-indices 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…