2016-02-06 3 views
1

Я пытаюсь объединить два массива numpy вместе, выбирая элементы из каждого в случайном порядке. Скажем, у меня есть два массива одинаковой длины x и y следующим образом:Выбирайте элементы из двух массивов numpy в случайном порядке

x = np.arange(10) 
y = np.arange(10, 20) 

и маску r:

r = np.random.choice([True, False], 10) 

Тогда есть ли способ, чтобы выбрать элементы из x, где r является True и от y где r является False?

Мне не нужно использовать подход маски, но мне нужно что-то быстро, так как x и y будет намного длиннее 10 в действительности, так что в идеале нет задействования цикла.

ответ

3

Как насчет этого?

z = y.copy() 
z[r] = x[r] 
+0

Высокий. Благодарю. – vahndi

0

Это один вкладыш с использованием np.where(<condition>, <where_true>, <where_false>) синтаксиса np.where:

z = np.where(r, x, y) 
Смежные вопросы