В настоящее время нет способа выбрать родительский элемент элемента в CSS.
Если бы был способ сделать это, это было бы в любой из текущих спецификаций селекторов CSS:
Тем временем, вам придется прибегнуть к JavaScript, если вам нужно выбрать родительский элемент.
Рабочий блок для выбора уровня 4 включает псевдокласс класса :has()
, который работает аналогично реализации jQuery . По состоянию на 2018 год это все равно не поддерживается никаким браузером .
Используя :has()
, исходный вопрос можно было бы решить с помощью этого:
li:has(> a.active) { /* styles to apply to the li tag */ }
Указывает ось, по которой вычисляются средства. По умолчанию axis=0
. Это согласуется с использованием numpy.mean
, когда axis
указано явно (в numpy.mean
, ось == Нет по умолчанию, которая вычисляет среднее значение по сплющенному массиву), в котором axis=0
вдоль строк (а именно index в пандах) и axis=1
вдоль столбцов . Для большей ясности можно указать axis='index'
(вместо axis=0
) или axis='columns'
(вместо axis=1
).
+------------+---------+--------+
| | A | B |
+------------+---------+---------
| 0 | 0.626386| 1.52325|----axis=1----->
+------------+---------+--------+
| |
| axis=0 |
↓ ↓
Пусть визуализирует (всегда будет помнить),
В Pandas:
Предположим, для выполнения операции concat () на dataframe1 & amp; dataframe2, мы будем принимать dataframe1 & amp; выньте 1-ю строку из dataframe1 и поместите в новый DF, затем мы выберем еще одну строку из dataframe1 и поместим в новый DF, мы повторяем этот процесс, пока не дойдем до нижней части dataframe1. Затем мы делаем один и тот же процесс для dataframe2.
В основном, укладываем dataframe2 поверх dataframe1 или наоборот.
Например, создавая кучу книг на столе или на полу
Предположим, для выполнения операции concat () в dataframe1 & amp; dataframe2, мы выберем 1-й полный столбец (aka 1-й ряд) dataframe1 и поместим его в новый DF, затем выберем второй столбец dataframe1 и придем к нему рядом (боком), мы должны повторить эту операцию до тех пор, пока все столбцы завершены. Затем мы повторяем тот же процесс на dataframe2. В основном, сбор данных с кадрами2 сбоку.
Например, размещение книг на книжной полке.
axis = 0 означает, что до оси вниз = 1 означает слева направо
sums[key] = lang_sets[key].iloc[:,1:].sum(axis=0)
В данном примере берется сумма всех данных в столбце ==.
Эти ответы помогают объяснить это, но он по-прежнему не совсем интуитивно понятен для не-программиста (т. е. кто-то вроде меня, который впервые изучает Python в контексте курсовой работы по науке о данных). Я все еще нахожу использование терминов «вдоль» или «для каждого» по отношению к строкам и столбцам, чтобы ввести в заблуждение.
Что для меня больше имеет смысл сказать это так:
. Таким образом, среднее значение на оси 0 будет быть средним из всех строк в каждом столбце, а среднее по оси 1 будет означать среднее значение всех столбцов в каждой строке.
В конечном итоге это говорит то же самое, что и @zhangxaochen и @Michael, но тем способом, который мне легче усвоить.
Ось с точки зрения программирования - это положение в кортеже формы. Вот пример:
import numpy as np
a=np.arange(120).reshape(2,3,4,5)
a.shape
Out[3]: (2, 3, 4, 5)
np.sum(a,axis=0).shape
Out[4]: (3, 4, 5)
np.sum(a,axis=1).shape
Out[5]: (2, 4, 5)
np.sum(a,axis=2).shape
Out[6]: (2, 3, 5)
np.sum(a,axis=3).shape
Out[7]: (2, 3, 4)
Среднее значение на оси приведет к удалению измерения.
Ссылаясь на исходный вопрос, форма dff равна (1,2). Использование оси = 1 изменит форму на (1,).
Самый простой способ понять - рассказать, вычисляете ли вы статистику для каждого столбца (axis = 0
) или каждой строки (axis = 1
). Если вы вычислите статистику, скажем, среднее значение, с axis = 0
вы получите эту статистику для каждого столбца. Поэтому, если каждое наблюдение представляет собой строку, и каждая переменная находится в столбце, вы получите среднее значение для каждой переменной. Если вы установите axis = 1
, вы будете рассчитывать свою статистику для каждой строки. В нашем примере вы получите среднее значение для каждого наблюдения по всем вашим переменным (возможно, вы хотите получить среднее значение соответствующих мер).
axis = 0
: по столбцу = столбец = вдоль строк
axis = 1
: по строке = row-wise = вдоль столбцов
Это означает, что он принял среднее значение с использованием каждого столбца, ось = 0 даст вам то, что вы думаете, но ось = 1 дает
(0.626386+1.52325)/2
1.075
dff.mean(axis=1)
удаляет ось 1
(столбцы) путем агрегирования средней функции над ними.
– TomAugspurger
3 March 2014 в 16:51
Мое мышление: Axis = n, где n = 0, 1 и т. д. означает, что матрица свертывается (складывается) вдоль этой оси. Итак, в 2D-матрице, когда вы рушитесь вдоль 0 (строк), вы действительно работаете по одному столбцу за раз. Аналогично для матриц более высокого порядка.
Это не то же самое, что нормальная ссылка на измерение в матрице, где 0 -> строка и 1 -> столбец. Аналогично для других измерений в массиве размерности N.
Дизайнер панд, Уэс МакКинни, интенсивно работал над финансовыми данными. Подумайте о столбцах как имена акций и индекс, как ежедневные цены. Затем вы можете догадаться, что такое поведение по умолчанию (т. Е. axis=0
) в отношении этих финансовых данных. axis=1
можно просто считать «другим направлением».
Например, функции статистики, такие как mean()
, sum()
, describe()
, count()
, по умолчанию - мудрый, потому что имеет смысл делать их для каждого запаса. sort_index(by=)
также по умолчанию используется столбец. fillna(method='ffill')
будет заполняться вдоль столбца, потому что это тот же самый запас. dropna()
defaults to row, потому что вы, вероятно, просто хотите отказаться от цены в этот день, а не выбрасывать все цены на этот запас.
Точно так же индексирование квадратных скобок относится к столбцам, поскольку чаще всего выбирается запас вместо того, чтобы выбирать день.
axis
относится к размерности массива, в случае pd.DataFrame
s axis=0
- это размер, который указывает вниз, а axis=1
- тот, который указывает справа.
Пример: подумайте о ndarray
с формой (3,5,7)
.
a = np.ones((3,5,7))
a
является трехмерным ndarray
, то есть имеет 3 оси («оси» являются множественными «осью»). Конфигурация a
будет выглядеть как 3 ломтика хлеба, где каждый срез имеет размер 5 на 7. a[0,:,:]
будет ссылаться на 0-й срез, a[1,:,:]
будет ссылаться на 1-й срез и т. д.
a.sum(axis=0)
применит sum()
вдоль 0-й оси a
, Вы добавите все фрагменты и получите один фрагмент формы (5,7)
.
a.sum(axis=0)
эквивалентен
b = np.zeros((5,7))
for i in range(5):
for j in range(7):
b[i,j] += a[:,i,j].sum()
b
и a.sum(axis=0)
будет оба выглядите так
array([[ 3., 3., 3., 3., 3., 3., 3.],
[ 3., 3., 3., 3., 3., 3., 3.],
[ 3., 3., 3., 3., 3., 3., 3.],
[ 3., 3., 3., 3., 3., 3., 3.],
[ 3., 3., 3., 3., 3., 3., 3.]])
В pd.DataFrame
оси работают так же, как в numpy.array
s: axis=0
применит sum()
или любую другую функцию сокращения для каждого столбца.
N.B. В ответе @ zhangxaochen я нахожу фразы «вдоль рядов» и «вдоль столбцов» немного запутанными. axis=0
следует ссылаться на «вдоль каждого столбца» и axis=1
«вдоль каждой строки».
Массивы сконструированы с так называемой осью = 0 и строками, расположенными вертикально относительно оси = 1 и столбцами, расположенными горизонтально. Ось относится к размерности массива. [/g0]
axis=0
означает, что каждая строка является массой, мы можем манипулировать только интернацией DataFrame вместо внутренней строки. axis=1
означает, что каждый столбец является массовым, мы можем манипулировать только межклассом DataFrame вместо внутреннего столбца.
– Belter
12 April 2018 в 11:02
axis=0
указывает на объединение по строкам иaxis=1
, указывает на то, что агрегирование вдоль столбцов происходит из-за того, как вы индексируете в dataframe. Вdf.iloc[row, column]
,row
находится в позиции индекса 0, аcolumn
находится в позиции индекса 1. Numpy обобщает это на N измерений, в которых мышление в терминах оси, которая сворачивается агрегацией начинает иметь больше смысла, чем «строка-мудрый». или "по столбцам". – Tom Q. 18 September 2015 в 16:47df.drop("A", axis = 1)
, то столбец A будет отброшен. Это не "вдоль строки" ни "строка-мудрый" но опускающийся столбец А. – ytu 23 February 2018 в 05:42axis=0
означает, что каждая строка является массой, мы можем манипулировать только интернацией DataFrame вместо внутренней строки.axis=1
означает, что каждый столбец является массовым, мы можем манипулировать только межклассом DataFrame вместо внутреннего столбца. Поэтому, если вы используетеdf.drop("A", axis = 1)
, он потеряет целую колонку. – Belter 12 April 2018 в 11:04