Я хочу определить массив на основе условия из двух других массивов в Python - PullRequest
0 голосов
/ 06 ноября 2018

скажем, у меня есть 2 массива

X = np.array([1.,2.,3.,4.,5.,])
Y = np.array([6.,7.,8.,9.,10.,])

и я хочу определить массив, который принимает значение, скажем, 1, где X <3 или Y = 9, и принимает значение 0 везде. Я использовал </p>

Z=[1 if i < 3 or j==9 else 0 for i in X and j in Y]
print(Z)

Я ожидаю массив, который выглядит как

[1,1,0,1,0] 

но я получил эту ошибку:

ValueError: The truth value of an array with more than one element is 
ambiguous. Use a.any() or a.all()

Ответы [ 3 ]

0 голосов
/ 06 ноября 2018

Попробуйте это:

np.where((X < 3) | (Y == 9) , 1, 0)
0 голосов
/ 06 ноября 2018

Используйте np.logical_or, гораздо больше, гораздо быстрее:

print(np.logical_or(X<3,Y==9).astype(int).tolist())

Выход:

[1, 1, 0, 1, 0]

Я рекомендую это, потому что это быстро.

0 голосов
/ 06 ноября 2018

Вы можете использовать zip для итерации по X и Y в парах:

Z=[1 if i < 3 or j==9 else 0 for i, j in zip(X, Y)]

Z становится:

[1, 1, 0, 1, 0]
...