2015-09-09 3 views
2

Мой вопрос вдохновлен другой: Intersection of 2d and 1d Numpy array Я ищу емким решение, которое не использует in1dКак индексировать массив numpy на подмножество массива bools, размер которого меньше размеров массива numpy?

Установка заключается в следующем. У меня есть numpy array из bools, в котором сообщается, какие значения numpy array A Я должен установить равным 0, называемый listed_array. Тем не менее, я хочу игнорировать информацию в первых трех столбцах listed_array и устанавливать только А в ноль, как указано в других столбцах списка_перехода.

Я знаю, неправилен:

A[listed_array[:, 3:]] = 0 

Я также знаю, что может подушечку этого подмножества listed_array с вызовом hstack, и это даст правильный выход, но есть что-то более емкий?

+0

ли '' A' и listed_array' имеют такую ​​же форму? –

+0

И если да, значит, вы не хотите ничего менять в первых трех столбцах 'A'? –

ответ

1

Если я правильно понял вопрос, то это следует сделать это:

A[:, 3:][listed_array[:, 3:]] = 0 

который является кратким версия

mask3 = listed_array[:, 3:] 
A3 = A[:, 3:] # This slice is a *view* of A, so changing A3 changes A. 
A3[mask3] = 0 
+0

да, конечно! Я чувствую себя глупо, пропустив это. Спасибо. – sunny

Смежные вопросы