Python 将值分配给numpy矩阵的多列,而不循环

Python 将值分配给numpy矩阵的多列,而不循环,python,numpy,Python,Numpy,我有一个n列的numpy矩阵X,我有一个由n个索引列表I组成的列表I,和一个由n个值列表V组成的对应列表V。对于X中的每列c,我想将索引I[c]分配给值V[c]。有没有一种方法可以在没有for循环的情况下实现这一点,即: n = 3 X = np.zeros((4,n)) I = [[0,1],[1,2,3],[0]] V = [[1,1],[2,2,2],[3]] for c in range(n): X[I[c],c] = V[c] 我看不到真正的矢量化,但没有明确的for循环:

我有一个n列的numpy矩阵X,我有一个由n个索引列表I组成的列表I,和一个由n个值列表V组成的对应列表V。对于X中的每列c,我想将索引I[c]分配给值V[c]。有没有一种方法可以在没有for循环的情况下实现这一点,即:

n = 3
X = np.zeros((4,n))
I = [[0,1],[1,2,3],[0]]
V = [[1,1],[2,2,2],[3]]

for c in range(n):
    X[I[c],c] = V[c]

我看不到真正的矢量化,但没有明确的for循环:

X[np.concatenate(I), np.arange(len(I)).repeat(np.vectorize(len)(I))] = np.concatenate(V)
X
# array([[1., 0., 3.],
#        [1., 2., 0.],
#        [0., 2., 0.],
#        [0., 2., 0.]])

但我不确定这会比for循环快多少。

我想不出一个,不。