Numpy: массив массивов, выберите первое значение больше нуля - PullRequest
0 голосов
/ 04 февраля 2019

Мои данные выглядят так:

all = [[-2,-1,0],[-1,-0.5,3],[-1,0.2,3],[0.2,1,3],[0.5,1,4]]

Мне нужно выбрать первый массив, значение которого в позиции [0] больше нуля, и вернуть мне в этом конкретном массиве значениеэлемент в положении 1. Я немного застрял, есть идеи?В моем случае это будет массив [0.2,1,3], и в этом массиве он должен вернуть мне 1.

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Вы можете использовать условную маскировку

all_arr = np.array([[-2,-1,0],[-1,-0.5,3],[-1,0.2,3],[0.2,1,3],[0.5,1,4]])
boolean = all_arr[:,0]>0
# [False False False  True  True]

print (all_arr[boolean][0,1]) # 0 because you just need the very first occurence
# 1.0
0 голосов
/ 04 февраля 2019

Вы можете использовать next с выражением генератора, затем использовать индексирование списка:

res = next(x for x in all_arr if x[0] > 0)[1]  # 1

Не используйте all для имени переменной, это встроенное значение.

Если вы заинтересованы в оптимизации производительности с массивом NumPy, см. Эффективно вернуть индекс первого значения, удовлетворяющего условию в массиве .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...