Продолжая последний пост о Numpy, давайте рассмотрим еще несколько нюансов в использовании функций массива Numpy.

np.zeros: возвращает новый массив заданной формы и типа, заполненный нулями.

import numpy as np
a = np.zeros((2, 3), dtype=np.int32)
print(a)
# Output:
# [[0 0 0]
# [0 0 0]]

np.ones: возвращает новый массив заданной формы и типа, заполненный единицами.

import numpy as np
a = np.ones((2, 3), dtype=np.int32)
print(a)
# Output:
# [[1 1 1]
# [1 1 1]]

Функции zeros() и one() используются для создания массивов того же размера, что и существующий массив, но заполненных нулями или единицами соответственно. Это может быть полезно, когда вам нужно выполнить арифметические операции над массивами разного размера.

import numpy as np
# create a 2x2 array of zeros of the same size as an existing array
arr = np.array([[1, 2], [3, 4]])
arr_zeros_like = np.zeros_like(arr)
print(arr_zeros_like)
# Output: [[0 0]
# [0 0]]

np.arange: возвращает массив с равномерно распределенными значениями в пределах заданного интервала. Это интересный способ быстро генерировать массивы нечетных или четных чисел.

import numpy as np
a = np.arange(0, 10, 2)
# Starting from 0 to 10, space each value with a gap of 2
print(a)
# Output: [0 2 4 6 8]

По умолчанию он может генерировать только одномерный массив. Но если кто-то хочет создать 2D-массив из вывода, есть косвенный способ, использующий метод reshape.

import numpy as np
# create a 1D array with 12 elements
arr_1d = np.arange(12)
# reshape the 1D array to a 2D array with shape (3, 4)
arr_2d = arr_1d.reshape(3, 4)
print(arr_2d)

array.sum: возвращает сумму всех элементов массива.

import numpy as np
a = np.array([1, 2, 3, 4, 5, 6])
print(a.sum())
# Output: 21

Интересно, что функция array.sum() возвращает сумму всех элементов входного массива независимо от количества измерений.

import numpy as np
a = np.array([[1, 2], [3, 4]])
print(np.sum(a))
# Output: 10

Функция sum() также предоставляет необязательный параметр axis, который можно использовать для указания оси или осей, вдоль которых должно выполняться суммирование.

Когда параметр оси указан, функция возвращает массив с уменьшенной размерностью.

import numpy as np
a = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(np.sum(a, axis=0))
# Output: array([[ 6, 8],
# [10, 12]])

Здесь параметр axis=0 указывает, что сумма должна браться по первому измерению входного массива, в результате чего получается массив (2, 2).

array.mean: возвращает среднее значение всех элементов в массиве.

import numpy as np
a = np.array([1, 2, 3, 4, 5, 6])
print(a.mean())
# Output: 3.5

Вот пример с двумерным массивом.

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
mean = arr.mean()
print(mean)
# Output: 3.5

Подобно функции array.sum, array.mean также принимает параметр оси.

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
mean_row = arr.mean(axis=1)
print(mean_row)
# Output: [2. 5.]

Результирующий массив имеет форму (2,) со средним значением каждой строки входного массива.

Основы Numpy, часть 2 — https://medium.com/@bigfundu/numpy-basics-2-1b9980defe8b

Основы Numpy, часть 1 — https://medium.com/@bigfundu/numpy-basics-1-1f367599de39