Найти большие различия в массиве NumPy - PullRequest
0 голосов
/ 12 июня 2019

У меня есть CSV-файл, который содержит данные двух светодиодных измерений.В файле есть ошибки, которые дают огромные искры на графике.Я хочу найти эти места, где это происходит.

У меня есть этот код, который составляет два массива, которые я строю.

x625 = np.array(df['LED Group 625'].dropna(axis=0, how='all'))


x940 = np.array(df['LED Group 940'].dropna(axis=0, how='all'))

1 Ответ

0 голосов
/ 12 июня 2019

Я предоставлю ответ с некоторыми искусственными данными, поскольку вы еще не опубликовали никаких данных.

Итак, после преобразования столбцов панд в массив numpy вы можете сделать что-то вроде этого:

import numpy as np

# some random data. 100 lines and 1 column
x625 = np.random.rand(100,1)

# Assume that the maximum value in `x625` is a spark.
spark = x625.max()

# Find where these spark are in the `x625` 
np.where(x625==spark)
#(array([64]), array([0]))

Вышеуказанное означает, что значение, равное spark, находится в 64-й строке 0-го столбца.

Точно так же вы можете использовать np.where(x625 > any_number_here)

Если вместо местоположения вам нужно создать логическую маску, используйте это:

boolean_mask = (x625==spark)

# verify 
np.where(boolean_mask)
# (array([64]), array([0]))

РЕДАКТИРОВАТЬ 1

Вы можете использовать numpy.diff(), чтобы получить поэлементные различия всех элементов в списке (переменная).

diffs = np.diff(x625.ravel())

Это будет иметь в индексе 0 результаты element1-element0. Если значения в diffs велики в определенном положении индекса, то в этой позиции возникла искра.

...