2017-02-01 6 views
0

Предположим, у меня есть вектор:выборе строк из 2-х матриц с использованием вектора индикатора в 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 в противном случае?

Я хочу м3 быть:

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

Как этого добиться? Предпочитаю решение, которое я смогу использовать и в анано.

+0

'np.vstack ((m1 [np.where (е == 1)], м2 [np.where (F = 1)])) '? Я не знаком с «theano». – Abdou

ответ

2

Я не знаю, о Теано но NumPy:

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

или 'где (f, m1.T, m2.T) .T' –

+0

@ B.M. интересно. Я бы ожидал, что ваша строка вернет массив, не связанный с C, но это не так. Это похоже на мою. –