Как создать пустой массив в python
Сообщение от datgen
здравствуйте сейчас начал изучать python и не могу понять,а как создать пустой массив определенного размера.если в c мы просто писали int s[100]
то как создать такой же пустой массив в python.
спасибо заранее.
питон несколько специфичен, относительно С. можно просто создать пустой массив
и затем добавлять в него «нулевые» (пустые) элементы
a.append(0) a = a + [0] a += [0]
полная свобода действий. и потенциальных ошибок. )))
пишу код не только за печеньки
Создайте пустой массив
1. Создайте пустой массив
2. Добавьте в него 3 любых числа по очереди, найдите максимальный элемент.
3. Создайте любимый список фруктов и овощей
4. Удалите в своем массиве первый и последний элементы
Помогите пожалуйста, ничего не понимаю в этом. могут поставить 2 за четверть
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Создайте два одномерных массива. Второй массив в три раза меньшей длины. Создайте коллекции из элементов масси
Создайте два одномерных массива. Второй массив в три раза меньшей длины. Создайте коллекции из.

Создайте пустой объект. Напишите код, позволяющий пользователю ввести произвольное число свойств и их значений.
Создайте пустой объект. Напишите код, позволяющий пользователю вве-сти произвольное число свойства.

Создайте класс person. Создайте тип people, описывающий массив элементов типа person.
Создайте класс person. У него должны быть поля: name: string; sex: ("муж", "жен"); height.
Автоматизируй это!
![]()
7054 / 4559 / 1207
Регистрация: 30.03.2015
Сообщений: 13,132
Записей в блоге: 29
Сообщение от Alisa_May 
могут поставить 2 за четверть
так это же справедливо, исходя из того что
Сообщение от Alisa_May 
ничего не понимаю в этом
разве не должен человек хотеть чтобы все было по справедливости? чтобы преступник получал срок, герой получал награду, неуч получал двойку?
![]()
7279 / 4102 / 1794
Регистрация: 27.03.2020
Сообщений: 6,926

Сообщение было отмечено Alisa_May как решение
Решение
Alisa_May, как вариант
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
if __name__ in '__main__' : # 1. massiv = [] # 2. num = int(input('Введите целое число:\n')) max_elem = num massiv.append(num) for i in range(2) : num = int(input('Введите целое число:\n')) massiv.append(num) if num > max_elem : max_elem = num print(*massiv) print(max_elem) # 3. veg_fr = [] while True: elem = input('Назовите любимый\nфрукт или овощ\n') veg_fr.append(elem) if input('продолжать? да/нет: ') == 'нет': break print(*veg_fr) # 4. if veg_fr: del veg_fr[0] if veg_fr: del veg_fr[-1] print(*veg_fr)
97 / 93 / 81
Регистрация: 10.01.2016
Сообщений: 663
Записей в блоге: 13
1 2 3 4 5 6 7 8 9
lst_num = [] lst_num = list(map(int, input('Введите три числа через пробел: ').split())) print(lst_num, max(lst_num)) lst_fruit = ['яблоко', 'лимон', 'помидор'] print(lst_fruit) del lst_fruit[0] del lst_fruit[-1] print(lst_fruit)
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

JS(DOM) Создайте пустой div на странице, и при отправке формы данные из трех input должны выводиться в этом самом div, в
1. При вводе имени "Larisa" в input отвечающий за имя, пользователь должен видеть сообщение в alert.
Создайте массив, который состоит из 15 разных чисел. Упорядочить массив по спаданию
Создайте массив, который состоит из 15 разных чисел. Упорядочить массив по спаданию
Массив: Создайте массив размером n×n и заполните его по заданному правилу.
Написать программу на С++. Дано число n, не превышающее 100. Создайте массив размером n×n и.
Массив: Создайте одномерный массив содержащий ваше ФИО как отдельные переменные.
Здравствуйте , помогите пожалуйста 1)Создайте одномерный массив содержащий ваше ФИО как.

Создайте многомерный массив, содержащий названия книг, организованных по жанрам: ассоциативный массив, в котор
Создайте многомерный массив, содержащий названия книг, организованных по жанрам: ассоциативный.
Как в Питоне объявить пустой массив заранее заданной длины?
Вот в Javascript
var arr = new Array(10);
alert(arr.length)
>>> 10
А как тоже самое в Питоне?
Лучший ответ
>>> a=[None]*10
>>> len(a)
10
Остальные ответы
Похожие вопросы
Ваш браузер устарел
Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.
Массив Numpy
Первое знакомство с библиотекой NumPy (Numerical Python) состоялось на двенадцатом занятии вводного курса. Затем мы несколько раз использовали эту библиотеку при построении моделей. Пришло время посвятить ее функционалу отдельный раздел.
Библиотека Numpy является основой для многих других библиотек в Питоне, например, Pandas, Matplotlib, scikit-learn или scikit-image. Главный объект библиотеки — массив Numpy (Numpy array). О нем мы поговорим сегодня.
На следующем занятии мы изучим математические операции над массивами, а через одно — рассмотрим работу со случайными числами.
Содержание занятия
- Понятие массива Numpy
- Как создать массив Numpy
- Функция np.array()
- Функция np.arange()
- Тип данных элементов массива
- Массив с нулевой размерностью
- Одномерный массив (вектор)
- Двумерный массив (матрица)
- Трехмерный массив
- Массив из нулей
- Массив из единиц
- Массив, заполненный заданным значением
- Пустой массив Numpy
- Функция np.linspace()
- Функции np.random.rand() и np.random.randint()
- Создание массива из функции
- Матрица csr и метод .toarray()
- Индекс элемента массива
- Срез массива
- Массив 2D
- Массив 3D
- Функция len()
- Вхождение элемента в массив
- Распаковка массива
- Изменение элементов массива
- Сортировка массива и обратный порядок его элементов
- Изменение размерности
- Объединение массивов
- Фильтр (маска) массива
- Вопросы для закрепления
Понятие массива Numpy
Массив Numpy — это многомерный массив (ndarray, n-dimensional array) данных, над которыми можно быстро и эффективно выполнять множество математических, статистических, логических и других операций.
Приведу пример массива с нулевым измерением, а также одно-, двух- и трехмерного массивов.

Теперь посмотрим как работать с этими массивами на практике.
Вначале нужно импортировать библиотеку Numpy.
# библиотеку Numpy принято сокращать как np
import numpy as npКак создать массив Numpy
Рассмотрим два варианта создания одномерного массива.
Функция np.array()
Во-первых, массив можно создать с помощью функции np.array(), которой мы передаем, например, список или кортеж элементов.
# создадим массив из списка
arr = np . array ( [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] )
array ( [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] )
# или кортежа
arr = np . array ( ( 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ) )
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])Функция np.arange()
Кроме того, можно воспользоваться функцией np.arange(). Эта функция, как и функция range(), с которой мы уже знакомы, создает последовательность элементов. Обязательным параметром является верхняя граница, которая не входит в последовательность.
# создадим последовательность из 10 элементов
arr = np . arange ( 10 )
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])Нижняя граница и шаг обязательными не являются.
# зададим нижнюю и верхнюю границу и шаг
arr = np . arange ( 2 , 10 , 2 )
print ( arr )
array([2, 4, 6, 8])Отличие range() от функции np.arange() заключается в том, что первая не допускает использования типа float.
# создадим список с помощью функций range() и list()
list ( range ( 2 , 5.5 , 0.5 ) )
При этом в массиве Numpy тип float вполне может использоваться.
np . arange ( 2 , 5.5 , 0.5 )
array([2. , 2.5, 3. , 3.5, 4. , 4.5, 5. ])Тип данных элементов массива
Как вы уже вероятно обратили внимание, в массивах тип данных определяется автоматически. При этом при создании массива мы можем задать этот параметр принудительно.
# создадим массив с элементами типа float
arr_f = np . array ( [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] , float )
print ( arr_f )
# тип данных можно посмотреть через атрибут dtype
print ( arr_f . dtype )
[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]Обратите внимание, в отличие, например, от списков, чаще всего в массивах содержатся элементы только одного типа (в частности, int или float).
Свойства (атрибуты) массива
Возьмем массив, который мы создали выше.
array([2, 4, 6, 8])
Важным свойством (или как правильнее говорить атрибутом) массива является количество его измерений, ndim. В данном случае это одномерный массив или вектор.
Теперь, с помощью атрибута shape, посмотрим на количество элементов в каждом измерении.
arr . shape
Обратите внимание, даже когда массив одномерный, результат атрибута shape выводится в виде кортежа (на это указывают круглые скобки и запятая после цифры четыре).
Атрибут size показывает общее количество элементов во всех измерениях.
# пока что у нас одно измерение, в котором четыре элемента
Как уже было сказано выше, атрибут dtype показывает тип данных отдельного элемента.
# в нашем случае — это целое число длиной 64 бита
arr . dtype
dtype(‘int64’)Атрибут itemsize позволяет узнать размер в байтах (один байт состоит из 8 бит) одного элемента. В нашем случае, элемент (число) состоит из 64 бит, что составляет восемь байтов.
# 64 / 8 бит = 8 байтов
arr . itemsizeОбщий размер массива в байтах (nbytes) позволяет понять, в частности, поместится ли массив в оперативную память компьютера.
# у нас четыре элемента по восемь байтов или 32 байта
arr . nbytesТот же результат можно получить, умножив общее количество элементов на размер одного элемента в байтах.
arr . size * arr . itemsize
Измерения массива
Как уже было сказано, ndarray (массив Numpy) — это многомерный массив. Давайте еще раз взглянем на массивы с различными измерениями, добавив только что изученные атрибуты этих массивов.

Теперь подробнее поговорим про размерность. Измерения (dimensions) создаются за счёт вложения одного массива в другой с помощью квадратных скобок []. Начнем с массива с нулевой размерностью.
Массив с нулевой размерностью
Массив с нулевой размерностью — это число (скаляр) и квадратных скобок не имеет.
arr_0D = np . array ( 42 )
Посмотрим на свойства этого массива.
print ( arr_0D . ndim )
print ( arr_0D . shape )
print ( arr_0D . size )Атрибут shape показывает отсутствие размерности, а size указывает на один элемент в массиве.
Одномерный массив (вектор)
Вложив несколько массивов с нулевой размерностью в квадратные скобки, мы получим одномерный массив или вектор.
arr_1D = np . array ( [ 1 , 2 , 3 ] )
array([1, 2, 3])Снова воспользуемся атрибутами массива.
print ( arr_1D . ndim )
print ( arr_1D . shape )
print ( arr_1D . size )Двумерный массив (матрица)
Поместив во вторые квадратные скобки, например, два одномерных массива, мы получим двумерный массив или матрицу.
# с точки зрения синтаксиса — это просто вложенные списки
arr_2D = np . array ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )
array([[1, 2, 3],Посмотрим на свойства.
print ( arr_2D . ndim )
print ( arr_2D . shape )
print ( arr_2D . size )Атрибут size двумерного массива более интуитивно понятен. В данном случае два элемента одного измерения умножены на три элемента второго.
Добавлю, что с точки зрения Numpy матрица с одной строкой или одним столбцом — это разные объекты. Начнем с матрицы, которая имеет три вектора по одному элементу.
column = np . array ( [ [ 1 ] , [ 2 ] , [ 3 ] ] )
# посмотрим на размерность
column . shapeТеперь наоборот, создадим матрицу с одной строкой, в которой три элемента.
row = np . array ( [ [ 1 , 2 , 3 ] ] )
array([[1, 2, 3]])
# размерность будет иной
row . shapeТрехмерный массив
Теперь создадим трехмерный массив, внутри которого будут два двумерных массива 2 х 3. Общее количество элементов будет равно двенадцати (2 х 2 х 3). Визуально это можно представить как стэк (наложение) двух матриц.

При этом, вместо того чтобы вручную прописывать все 12 значений, мы последовательно воспользуемся функцией np.arange() и методом np.reshape().
arr_3D = np . arange ( 12 ) . reshape ( 2 , 2 , 3 )
array([[[ 0, 1, 2],Функция np.arange(), как мы уже видели выше, создаст одномерный массив из 12 элементов, а метод np.reshape() распределит их по измерениям. Выведем атрибуты.
print ( arr_3D . ndim )
print ( arr_3D . shape )
print ( arr_3D . size )Обратите внимание, атрибут shape сначала выводит размерность внешнего измерения, в нем две матрицы. Далее в каждую матрицу вложены два одномерных вектора. В каждом векторе по три элемента.
Аналогичным образом создаются четырехмерные массивы, а также массивы с большим количеством измерений.
Понятие тензора
Добавлю, что в математике n-мерный массив называется тензором, а числа (скаляры), векторы и матрицы являются его частными случаями для нуля, одного и двух измерений соответственно.

Другие способы создания массива
Массив из нулей
Иногда бывает полезно создать массив, все элементы которого равны нулю. Для этого используется функция np.zeros().
# ей мы можем передать одно значение для создания одномерного массива
np . zeros ( 5 )
array([0., 0., 0., 0., 0.])
# или кортеж из чисел для указания количества нулей в каждом измерении
np . zeros ( ( 2 , 3 ) )
array([[0., 0., 0.],Массив из единиц
В тех случаях когда нужно создать массив, заполненный единицами, можно воспользоваться функцией np.ones().
# создадим трехмерный массив
np . ones ( ( 2 , 2 , 3 ) )
array([[[1., 1., 1.],Массив, заполненный заданным значением
Функция np.full() создает массив, заполненный заданным значением.
# создадим матрицу 2 х 3 и заполним ее цифрой четыре
np . full ( ( 2 , 3 ) , 4 )
array([[4, 4, 4],Пустой массив Numpy
В отличие от предыдущих инструментов, функция np.empty() возвращает массив заданной размерности, но без инициализации его значений. Другими словами, пустой массив.
# создадим пустую матрицу 3 х 2
np . empty ( ( 3 , 2 ) )
array([[4.65552661e-310, 0.00000000e+000],
[0.00000000e+000, 0.00000000e+000],
[0.00000000e+000, 0.00000000e+000]])Кроме того, любой массив Numpy можно преобразовать в описанные выше массивы с помощью функций np.zeros_like(), np.ones_like(), np.full_like() и np.empty_like(). Приведу пример для np.zeros_like().
# создадим массив 2 x 3 с числами от 1 до 6
a = np . arange ( 1 , 7 ) . reshape ( 2 , 3 )
array([[1, 2, 3],
# и превратим его в массив с нулями
np . zeros_like ( a )
array([[0, 0, 0],Примеры работы с тремя оставшимися функциями можно посмотреть в ноутбуке⧉.
Функция np.linspace()
Функция np.linspace() позволяет указать диапазон начального и конечного значений, а также количество равноудаленных точек внутри этого диапазона (включая начальное и конечное значения).
# создадим диапазон от 0 до 0,9 и
# разделим его на десять точек, включая 0 и 0,9
np . linspace ( 0 , 0.9 , 10 )
array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])Обратите внимание, функция np.linspace() сама определяет, где расставить точки. Нам нужно лишь указать их количество. Этим она отличается от функции np.arange(), в которой мы указываем шаг в пределах заданного диапазона.
# с функцией np.arange мы точно знаем, где будут расположены точки
np . arange ( 0 , 1 , 0.1 )
array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])Функцию np.linspace() удобно использовать для построения графиков функций.
# импортируем библиотеку matplotlib
import matplotlib . pyplot as plt
# зададим размер графика в дюймах
plt . figure ( figsize = ( 8 , 6 ) )
# зададим интервал, например, от -5 до 5 и сформируем на нем 5000 точек
# это будут наши координаты по оси x
x = np . linspace ( — 5 , 5 , 5000 )
# по оси y отложим квадрат этих точек
# создадим сетку
# выведем кривую и подписи на графике
plt . plot ( x , y )
plt . xlabel ( ‘x’ , fontsize = 14 )
plt . ylabel ( ‘y’ , fontsize = 14 )
# результатом будет парабола
В качестве примера выведем первые 10 точек, созданные функцией np.linspace().
array([-5. , -4.9979996, -4.9959992, -4.9939988, -4.9919984,
-4.989998 , -4.9879976, -4.9859972, -4.9839968, -4.9819964])Функции np.random.rand() и np.random.randint()
Массивы можно также создавать с помощью функций, генерирующих псевдослучайные числа. В частности, функция np.random.rand() создает массив заданной размерности, заполненный числами от 0 до 1 (единица в диапазон не входит).
np . random . rand ( 4 , 3 )
array([[0.13506003, 0.50671081, 0.48772983],
[0.93478513, 0.31008048, 0.96621122],
[0.7404316 , 0.81168816, 0.94700116],
[0.18212183, 0.92247344, 0.2120635 ]])Функция np.random.randint() формирует массив целых чисел в заданном диапазоне (верхняя граница не входит в диапазон) и с заданной размерностью.
# создадим массив размерностью 2 x 3 x 2 c числами [-3, 3)
np . random . randint ( — 3 , 3 , size = ( 2 , 3 , 2 ) )Более подробно с этими и другими похожими функциями мы познакомимся на одиннадцатом занятии.
Создание массива из функции
Помимо вышеупомянутых способов массив можно создавать с помощью собственных функций. Для того чтобы понять, как это работает, вначале давайте вспомним координаты массива Numpy.

Функция np.fromfunction() берет координаты (i, j) каждой ячейки и передает их в собственную функцию. Посмотрим, как это работает на практике.
# создадим собственную функцию, которая принимает два числа
# и возводит первое число в степень второго
def power ( i , j ) :
return i * * jТеперь применим эту функцию к каждой ячейке (координатам) массива с размерностью (3, 3).
np . fromfunction ( power , ( 3 , 3 ) )
В np.fromfunction() можно передать и lambda-функцию.
# напишем lambda-функцию, которая принимает два числа и
# проверяет равны ли они (тогда она выводит True) или нет (тогда False)
lambda i , j : i == j
array([[ True, False, False],
[False, True, False],
[False, False, True]])Матрица csr и метод .toarray()
Кроме этого в случае если данные хранятся в формате csr (сжатое хранения строкой, compressed sparse row), то мы можем преобразовать их обратно в массив Numpy с помощью метода .toarray().
# создадим матрицу с преобладанием нулевых значений
A = np . array ( [ [ 2 , 0 , 0 , 1 , 0 , 0 , 0 ] , [ 0 , 0 , 3 , 0 , 0 , 2 , 0 ] , [ 0 , 0 , 0 , 1 , 0 , 0 , 0 ] ] )
array([[2, 0, 0, 1, 0, 0, 0],
[0, 0, 3, 0, 0, 2, 0],
[0, 0, 0, 1, 0, 0, 0]])Долю нулевых значений несложно посчитать через функцию np.count_nonzero() и атрибут size.
1.0 — np . count_nonzero ( A ) / A . size
0.7619047619047619Преобразуем матрицу в формат csr.
# импортируем функцию csr_matrix()
from scipy . sparse import csr _ matrix
# и применим ее к матрице А
B = csr_matrix ( A )Вернем матрицу csr обратно в формат массива Numpy.
C = B . toarray ( )
array([[2, 0, 0, 1, 0, 0, 0],
[0, 0, 3, 0, 0, 2, 0],
[0, 0, 0, 1, 0, 0, 0]], dtype=int64)Напомню, что с форматом csr мы впервые познакомились, когда изучали рекомендательные системы. Метод .toarray() мы активно применяли на занятии по обработке естественного языка.
Индексы и срезы
Индекс элемента массива
Подобно спискам, к элементам массива можно получить доступ по их индексу. Главное отличие — необходимо учитывать наличие измерений. Вначале рассмотрим индексы массива на схеме.

Если мы хотим получить доступ к элементу массива, то необходимо вначале указать индекс внешнего измерения (оно будет первым по счету в выводе атрибута shape), а затем индекс внутреннего.
Другими словами, мы двигаемся как бы снаружи вовнутрь, перемещаясь из одного измерения в другое.
Посмотрим, как это реализовать на Питоне. Создадим двумерный массив.
a = np . array ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )
array([[1, 2, 3],Посмотрим на измерения и количество элементов в каждом из них.
Выведем первый элемент первого (внешнего) измерения.
# первый элемент представляет собой вектор
array([1, 2, 3])Второй индекс позволяет обратиться, например, к первому элементу первого вектора.
Теперь выведем значение шесть.
Срез массива
В массиве Numpy доступны и срезы (slice). Срез одномерного массива очень похож на срез списка.
# создадим одномерный массив
b = np . array ( [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] )
array([1, 2, 3, 4, 5, 6, 7, 8])Возьмем каждый второй элемент в интервале с 1-го по 6-й индекс.
b [ 1 : 6 : 2 ]
array([2, 4, 6])Посмотрим на схему.

Когда измерений больше одного, внутри квадратных скобок измерения отделяются запятой. Создадим двумерный массив.
c = np . array ( [ [ 1 , 2 , 3 , 4 ] , [ 5 , 6 , 7 , 8 ] ] )
array([[1, 2, 3, 4],Сделаем срез из первой строки (внешнее измерение) и первых двух столбцов (внутреннее измерение).
# 0 указывает на первую строку, диапазон :2 — на первые два столбца
Если нужно взять все элементы одного из измерений, достаточно поставить двоеточие без указания индекса.
# возьмем обе строки во втором столбце
С помощью среза можно вывести конкретный элемент массива.
# выведем элемент в первой строке и первом столбце
Другими словами, c [ 0 , 0 ] == c [ 0 ] [ 0 ] .
Кроме того, обратите внимание, что индекс в формате array[i, j] и координаты элементов массива, которые мы рассмотрели ранее, это одно и то же.
Допускаются срезы с отрицательным индексом.
# выведем элемент в последней строке и последнем столбце
Рассмотрим более сложный пример. Возьмем всю вторую строку [ 1 ] и каждый второй столбец [ :: 2 ] .
Теперь создадим массив с тремя измерениями.
# -1 означает, что Питон сам рассчитает количество элементов в этом измерении
d = np . arange ( 16 ) . reshape ( 4 , 2 , — 1 )Можно сказать, что наш 3D массив состоит из четырех матриц 2 x 2.
Вначале выведем значение десять. Если идти снаружи вовнутрь, получается, что это третья матрица [2], второй вектор [1] и первый элемент [0].
d [ 2 ] [ 1 ] [ 0 ]
Для срезов понадобится две запятых.
# выведем третью и четвертую матрицу [2:]
# и в них вторую строку [1] и все столбцы [:]
array([[10, 11],Если указать только один срез, мы будем работать только во внешнем измерении (с четырьмя матрицами).
# выведем первые две матрицы массива
Прежде чем завершить разговор про срезы, выведем первые строки каждой матрицы.
Оси массива
С концепцией измерения массива тесно связано понятие оси (axis, множественное число — axes). У массива столько же осей, сколько и измерений. Мы уже столкнулись с осями двух и трехмерного массивов, когда работали с изображениями.
Рассмотрим этот вопрос ещё раз.
Массив 2D
В двумерном массиве два измерения и соответственно две оси.

В документации Numpy существует такое понятие как первая и последняя ось. Применительно к двумерному массиву, ось 0 — это первая ось, а ось 1 — последняя.
Многие, в частности, математические и статистические методы в Numpy предполагают указание параметра оси. Продолжим работу с приведенным выше двумерным массивом.
arr_2D = np . array ( [ [ 1 , 2 ] , [ 3 , 4 ] ] )
Сложение вдоль первой оси (axis = 0)
Найдем сумму по столбцам (вдоль оси 0).
np . sum ( arr_2D , axis = 0 )

Сложение вдоль второй оси (axis = 1)
Теперь найдем сумму по строкам (вдоль оси 1).
np . sum ( arr_2D , axis = 1 )

Обратите внимание, хотя axis = 0 принято ассоциировать со строками двумерного массива, сложение происходит вдоль вертикальной оси или по столбцам. Параметр axis = 1, отвечающий за столбцы, наоборот предполагает сложение вдоль горизонтальной оси по строкам.
При таких операциях говорят, что мы агрегируем (aggregate) данные и сворачиваем (collapse) или сокращаем (reduce) измерения вдоль определенной оси. И действительно, в каждой из описанных выше операций двумерный массив превратился в одномерный.
Сложение вдоль обеих осей (axis = (0, 1))
Если в параметр axis передать кортеж с указанием обеих осей (0, 1), сумма будет рассчитана сначала вдоль оси 0, затем вдоль оси 1.
