#python #arrays #numpy #filter
#python #массивы #numpy #Фильтр
Вопрос:
Я прошу помощи в фильтрации через массивы numpy. В настоящее время у меня есть массив numpy, который содержит следующую информацию:
[[x1_1, x1_2, ..., x1_n], [x2_1, x2_2, ..., x2_n], [y1, y2, ..., yn]
ie. массив по сути представляет собой набор данных, где x1, x2 — это объекты (координаты), а y — выходные данные (значение). Каждая точка данных имеет соответствующие значения x1, x2 и y, так что, например, информация, соответствующая точке данных i, равна x1_i, x2_i и yi.
Теперь я хочу извлечь все точки данных путем фильтрации через y, то есть я хочу знать все точки данных, в которых y> некоторое значение. В моем случае мне нужна информация (все с той же структурой numpy) для всех случаев, когда y> 0. Я действительно не знаю, как это сделать — я играл с логической индексацией, такой как d[0:2,y>0]
или d[d[2]>0]
, но ничего не добился.
Поясняющий пример:
Учитывая набор данных:
d = [[0.1, 0.2, 0.3], [-0.1,-0.2,-0.3], [1,1,-1]]
Я извлекаю все точки или экземпляры, где y > 0
, т. Е. d[2] > 0
, И он должен возвращать значения:
[[0.1, 0.2],[-0.1,-0.2],[1,1]]
Любые советы или помощь будут оценены.
Ответ №1:
Вы можете использовать:
import numpy as np
d = np.array([[0.1, 0.2, 0.3], [-0.1,-0.2,-0.3], [1,1,-1]])
print (d)
[[ 0.1 0.2 0.3]
[-0.1 -0.2 -0.3]
[ 1. 1. -1. ]]
#select last row by d[-1]
print (d[-1]>0)
[ True True False]
print (d[:,d[-1]>0])
[[ 0.1 0.2]
[-0.1 -0.2]
[ 1. 1. ]]
Комментарии:
1. вау, спасибо! Вопрос о последней строке, numpy выполняет поиск по всему массиву, потому что вы сделали :, но выполняет условие из аргументов после запятой? Так это похоже на то, что первый оператор перед запятой фильтрует строки, а второй оператор после запятой фильтрует столбцы?
2. Хммм, более сложный вопрос для меня, потому что я
pandas
парень больше asnumpy
, но я думаю:
, что это означает выбрать все «строки», а затем отфильтровать «столбцы» по логической маске. Но я не100%
уверен.3. хорошо, звучит неплохо. Да, pandas кажется лучше, но я использую numpy для ML и pandas для другого анализа данных :).