2016-03-23 5 views
1

У меня есть 2 Numpy массивов и я хочу каждый раз, когда элемент B является 1, то элемент в А равен 0. Оба массива всегда в одном измерении:Сравнения 2 Numpy массивов

A = [1, 2, 3, 4, 5] 
B = [0, 0, 0, 1, 0] 

Я пытался сделать но я до сих пор не могу заставить его работать.

B[A==1]=0 

Как я могу достичь этого в numpy, не выполняя обычный цикл?

ответ

3

Во-первых, вам нужны они, чтобы быть массивными массивами, а не списками. Тогда вы просто перевернутый B и A.

import numpy as np 
A = np.array([1, 2, 3, 4, 5]) 
B = np.array([0, 0, 0, 1, 0]) 
A[B==1]=0 ## array([1, 2, 3, 0, 5]) 

Если вы используете списки вместо этого, вот что вы получите

A = [1, 2, 3, 4, 5] 
B = [0, 0, 0, 1, 0] 
A[B==1]=0 ## [0, 2, 3, 4, 5] 

Это потому, что B == 1 является False или 0 (вместо массива). Поэтому вы по существу пишете A[0] = 0

2

Разве это не то, что вы хотите сделать?

A[B==1] = 0 
A 
array([1, 2, 3, 0, 5]) 
Смежные вопросы