使用 numpy 中的指示向量从 2 个矩阵中选择行

selecting rows from 2 matrices using an indicator vector in numpy

假设我有一个向量:

f = np.array([1,1,0,0]) #(4,)

和 2 个矩阵:

m1 = np.array([[1,2],[3,4],[5,6],[7,8]]) #(4,2)
m2 = np.array([[10,20],[30,40],[50,60],[70,80]]) #(4,2)

我如何创建一个新矩阵 m3 从 m1 中选择行,其中 f == 1,否则从 m2 中选择行?

我希望 m3 是:

>>> m3
array([[ 1,  2],
       [ 3,  4],
       [50, 60],
       [70, 80]])

我该如何实现?更喜欢我也可以在 theano 中使用的解决方案。

我不知道 Theano,但对于 numpy:

np.where(f[:, None], m1, m2)