Python NumPy добавление [] после оператора, например, где - PullRequest
0 голосов
/ 31 мая 2019

Я супер новичок в питоне.Я пытаюсь понять какой-то код.Код использует библиотеку NumPy для анализа потока данных.

in0 = input_items[0]
mask = np.where(in0 > 0.9)[0]
(start, stop) = (mask[0], mask[-1])
blank = int(50e-6*sample_rate) # Skip first 50 us.
start = start+blank
foo = in1[start:stop] > 0.5
preamble_location = np.where(foo)[0][0]

Во второй строке возвращается np.where, где элементы in0 больше 0,9.Я не понимаю, что делает [0] в этой строке.Как и в последней строке, я не уверен, что делает [0] [0].

Ответы [ 2 ]

3 голосов
/ 31 мая 2019

Предположим, у вас есть следующий массив in0. np.where(in0 > 0.9) вернет вам кортеж индексов.

in0 = np.array([0.1, 0.5, 0.95, 1.3, 0.5, 0.2])

Это можно проверить, напечатав тип

print (type(np.where(in0 > 0.9)))
# <class 'tuple'>

Длина этого кортежа составляет 1

.
print (len(np.where(in0 > 0.9)))
# 1

Теперь вам нужны индексы массива in0, которые удовлетворяют этому условию. Но np.where возвращает кортеж.

print (np.where(in0 > 0.9))
# (array([2, 3]),)

Для получения списка индексов необходимо использовать индекс [0]

print (np.where(in0 > 0.9)[0])
# [2 3]

Теперь перейдем ко второму вопросу о [0][0]. Рассмотрим следующий пример:

foo = in0[0:4] > 0.5
print (foo)

# array([False, False,  True,  True])

Теперь np.where снова возвращает кортеж, как показано выше. Чтобы получить массив индексов, вам нужно получить к нему доступ с помощью индекса [0]. Это вернет

preamble_location = np.where(foo)[0]
print (preamble_location)
# [2 3]

Теперь [0][0] просто вернет первый элемент этого массива индексов, который является значением 2. Если вы используете [0][1], вы получите второй элемент, т.е. 3.

preamble_location = np.where(foo)[0][0]
print (preamble_location)
# 2
0 голосов
/ 31 мая 2019

Это функция Numpy: https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html

[0] - первый элемент возврата.

Как:

list = [3,2,5]
print(list[0])

Возврат будет:

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