Axis 0 python что значит
Перейти к содержимому

Axis 0 python что значит

  • автор:

Data Exploration With Pandas

Tanisha Hudson

I originally come from a background of R, and while I still love to get my hands dirty with this statistical program, I fell in love with the ease and beauty of Pandas.

Pandas is one of the many libraries within the object oriented language of Python and is used for data manipulation, data exploration and data analysis. (among other things) We often import…

3.7 Arrays and axes

Here I make an array that contains three random numbers, using the size keyword argument:

Remember, this is a value of type array :

We can compare all the values in this array to a single number. In that case, we get a new array, with a True value in the positions where the comparison was True, and False values otherwise:

We also found that we can apply functions to these arrays. For example, we found that np.count_nonzero returns the number of elements that are not 0.

This works because the function considers False to be equal to 0 and True to be equal to 1:

Two-dimensions

The array three_randoms is a one dimensional array, with three elements.

We can also create two-dimensional arrays. Here is an array with 10 rows and 3 columns.

Notice that we made the one-dimensional array with size=3 . We make the two-dimensional array by passing two numbers to size . We pass two numbers with something like size=(10, 3) , as we did above. We haven’t covered this way of specifying a pair of numbers yet. For the moment, we hope you will take our word for it.

You can probably predict what will happen when we compare this two-dimensional array to 0.5.

As before, there is now a True at each position where there number was less than 0.5, with False everywhere else.

Can you predict what will happen with np.count_nonzero ?

You can probably see that np.count_nonzero is counting the number of True values in any position in the array.

Operations on axes

What if we want to see how many True values there are in each column?

To do this, we need the axis keyword to np.count_nonzero , like this:

You will see that we have one value per column, where each value is the count of True values in that column.

The array has two dimensions, and therefore, two axes. The first axis is the rows, the second axis is the columns.

Why 0 ? Python thinks of sequences as starting at position 0. The element at position 0 is the first element in the sequence. Thus, axis=0 means the first axis.

Now imagine looking down the first axis in our array. The first axis is the rows, so we are looking down the rows. First you see the first element in the first row, then you see the first element in the second row, and so on. So, if we are doing a count of not-0 elements over the first axis (rows), we do this:

  • count the number of not-0 element going down the first element in the row, then
  • count the number of not-0 element going down the second element in the row, then
  • count the number of not-0 element going down the third element in the row.

The result is three values, one for each element in the row.

Because of the reasoning above, these the counts for each column (there are 3 columns).

What if we want the counts for each row?

axis=1 asks for the count over the second axis. If we look over the second axis, we look over the first element in the first row, then the second element in the first row, then the third element in the first row. So, counting over axis=1 , gives the counts for each row. We get one count for each row, so 10 counts.

Оси и размеры в массиве Numpy и Pandas

Как карьерный специалист по данным, вам всю жизнь приходится иметь дело с матричной формой данных (в Numpy, Pandas или TensorFlow), где оси и измерения являются фундаментальной структурной концепцией.

Давайте посмотрим на основные атрибуты класса ndarray в numpy

Что такое форма массива

Рассмотрим приведенный ниже массив

«Форма» этого массива — кортеж с количеством элементов на ось (измерение). В нашем примере форма равна (6, 3), т.е. у нас 6 строк и 3 столбца.

В Numpy есть функция под названием «shape», которая возвращает форму массива. Фигура представляет собой набор целых чисел. Эти числа обозначают длину соответствующего измерения массива.

Что такое ось массива Numpy

В математике / физике размерность или размерность неформально определяется как минимальное количество координат, необходимых для определения любой точки в пространстве. Но в Numpy, согласно numpy doc, это то же самое, что ось / оси:

В Numpy измерения называются осями. Количество осей — это ранг.

Проще говоря, когда у вас есть более чем одномерный массив, концепция Axis вообще не приходит. Например, двумерный массив имеет 2 оси.

Первая ось (то есть ось-0) проходит вертикально вниз по строкам, а вторая (ось-1) проходит горизонтально по столбцам.

Что может иметь больше смысла с точки зрения чистого программирования действий над элементами массива:

Ось 0 будет действовать на все СТРОКИ в каждой КОЛОНКЕ.

Ось 1 будет воздействовать на все КОЛОННЫ в каждом РЯДЕ.

В принципе, проще всего запомнить это как 0 = вниз и 1 = поперек.

Таким образом, вычисление mean по оси 0 будет средним значением всех строк в каждом столбце, а среднее значение на оси 1 будет средним значением всех столбцов в каждой строке.

Также объясняя больше, по определению, номер оси измерения — это индекс этого измерения в shape массива. Это также позиция, используемая для доступа к этому измерению во время индексирования.

Например, если 2D-массив a имеет форму (5,6), вы можете получить доступ от a[0,0] до a[4,5] . Таким образом, ось 0 — это первое измерение («строки»), а ось 1 — это второе измерение («столбцы»).

Давайте посмотрим на быстрый пример, зная, что в Numpy измерения называются осями. Количество осей ранговое. Итак, давайте посчитаем размеры.

Затем добавьте дополнительные элементы в массив

Размер по-прежнему 1

А теперь его 2. Это двумерный массив с 3 строками и 3 столбцами. Имеет две оси.

В массивах numpy размерность относится к количеству осей, необходимых для его индексации, а не к размерности какого-либо геометрического пространства. Например, вы можете описать расположение точек в трехмерном пространстве с помощью двухмерного массива:

Которая имеет форму (4, 3) и размер 2. Но она может описывать трехмерное пространство, потому что длина каждой строки (ось 1) равна трем, поэтому каждая строка может быть компонентом x, y и z местоположения точки.

Ниже пример 4-мерного массива

объединить массив Numpy с np.c_

Важное применение концепции оси вступает в игру при объединении массивов Numpy с функцией класса .c_

функция c_ объединяет ваш первый массив с последним измерением (т. е. осью) вашего последнего массива в функции.

Итак, согласно этому методу,

Все, что вам нужно сделать, это добавить по второй оси.

Итак, проверка с массивами формы (3, 1). Ниже оба входных массива имеют форму (3,). Но обратите внимание, что второй оси нет. Итак, мы мысленно добавляем один. Теперь форма обоих массивов станет (3,1).

Пояснения — следуя правилу сложения по второй оси — результирующая форма будет (3, 1 + 1), то есть (3,2). какова форма результата —

Теперь оформление заказа с массивами формы (2, 3) — внизу оба входных массива имеют форму (2, 3)

Мы уже отметили, что функция c_ объединяет ваш первый массив с последним измерением (осью) вашего последнего массива в функции.

Теперь посмотрим на np.c_(a, b) :

Во-первых, давайте посмотрим на фигуру:

Форма обоих a и b (2, 3) . Соединение a (2, 3) с последней осью b (3) при сохранении других осей без изменений (1) станет

Это новая форма. Теперь посмотрим на результат:

В b два элемента на последней оси:

Добавление к нему означает:

Сумма двух массивов Numpy

Давайте посмотрим, как оси NumPy работают внутри функции суммы NumPy.

Когда вы пытаетесь понять оси в сумме NumPy, вам нужно знать, что фактически контролирует параметр оси.

Аргумент оси может быть целым числом, указывающим ось для агрегирования значений. Во многих случаях аргумент оси также может быть кортежем целых чисел, который указывает несколько осей для агрегирования.

ЧИСЛЕННАЯ СУММА С ОСИ = 0

Здесь мы собираемся использовать функцию суммы NumPy с осью = 0.

Во-первых, мы просто собираемся создать простой массив NumPy.

Вышеупомянутый 2d_array — это двумерный массив, который содержит значения от 0 до 5 в формате 2 на 3.

Напечатаем, чтобы увидеть всю матрицу

Теперь просуммируйте 2d_array

Когда мы устанавливаем axis = 0, функция фактически суммирует столбцы.

Почему? Потому что параметр оси указывает, какая ось свернута.

Помните, что ось 0 относится к вертикальному направлению строк. Это означает, что код np.sum (2d_array, axis = 0) сворачивает строки во время суммирования.

Поэтому, когда мы устанавливаем axis = 0, мы не суммируем по строкам. Скорее сворачиваем ось 0.

ЧИСЛЕННАЯ СУММА С ОСИ = 1

Снова начнем с нашего более раннего массива np_array_2d

мы собираемся использовать функцию суммы и установим для параметра оси значение axis = 1.

И вот результат:

ось 1 относится к горизонтальному направлению столбцов. Это означает, что код np.sum (np_array_2d, axis = 1) сворачивает столбцы во время суммирования.

Так что вообще

Если вы сделаете .sum(axis=n) , например, тогда измерение n будет свернуто и удалено, при этом каждое значение в новой матрице будет равно сумме соответствующих свернутых значений. Например, если b имеет форму (5,6,7,8) , а вы используете c = b.sum(axis=2) , тогда ось 2 (размер с размером 7) свернута, и результат будет иметь форму (5,6,8) .

Итак, теперь давайте посмотрим на пример с матрицей массива Numpy 3 на 3.

А теперь просуммируйте их по различным осям.

Точно так же, выполняя другую функцию агрегирования Numpy np.mean (), мы можем указать, по какой оси мы хотим вычислить значения.

Для оси = 0 мы применяем функцию к каждому «столбцу» или ко всем значениям, которые встречаются по вертикали.

Для оси = 1 мы применяем функцию к каждой «строке» или ко всем значениям по горизонтали.

Поэтому, если у вас возникли проблемы с запоминанием вышеизложенного, при выполнении функций агрегирования в массиве Numpy — просто помните, что вы удаляете это измерение, когда вы запускаете среднее значение или сумму на этой оси.

axis = 0 удаляет размер строки

axis = 1 удаляет размер столбца.

А вот краткий список различных функций массива агрегирования Numpy.

По умолчанию функции в приведенной выше таблице объединяются по всему входному массиву. Используя аргумент ключевого слова оси с этими функциями и соответствующими им методами ndarray, можно контролировать, по какой оси выполняется агрегирование массива. Аргумент оси может быть целым числом, указывающим ось для агрегирования значений. Во многих случаях аргумент оси также может быть кортежем целых чисел, который указывает несколько осей для агрегирования.

Та же концепция массива и оси применима и к пандам

0 = вниз и 1 = поперек.

Таким образом, mean вычисление по оси 0 будет средним значением всех строк в каждом столбце, а среднее значение на оси 1 будет средним значением всех столбцов в каждой строке.

Разница между осью = 0 и осью = 1 в Pandas

Многие функции в pandas требуют, чтобы вы указали ось, вдоль которой применяется определенный расчет.

Обычно применяется следующее эмпирическое правило:

  • axis=0 : применить вычисление «по столбцам»
  • axis=1 : применить вычисление «построчно»

В следующих примерах показано, как использовать аргумент оси в различных сценариях со следующими пандами DataFrame:

Пример 1. Найдите среднее значение по разным осям

Мы можем использовать ось = 0 , чтобы найти среднее значение каждого столбца в DataFrame:

Вывод показывает среднее значение каждого числового столбца в DataFrame.

Обратите внимание, что pandas автоматически избегает вычисления среднего значения столбца «команда», потому что это столбец символов.

Мы также можем использовать ось = 1 , чтобы найти среднее значение каждой строки в DataFrame:

Из вывода мы видим:

  • Среднее значение в первой строке равно 13,667 .
  • Среднее значение во второй строке равно 9.000 .
  • Среднее значение в третьей строке равно 10,667 .

Пример 2. Найдите сумму по разным осям

Мы можем использовать ось = 0 , чтобы найти сумму определенных столбцов в DataFrame:

Мы также можем использовать ось = 1 , чтобы найти сумму каждой строки в DataFrame:

Пример 3. Найдите максимум по разным осям

Мы можем использовать ось = 0 , чтобы найти максимальное значение определенных столбцов в DataFrame:

Мы также можем использовать ось = 1 , чтобы найти максимальное значение каждой строки в DataFrame:

Из вывода мы видим:

  • Максимальное значение в первой строке равно 25 .
  • Максимальное значение во второй строке равно 12 .
  • Максимальное значение в третьей строке равно 15 .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *