Основа NumPy для интеллектуального анализа данных Основа Python (ниже)

искусственный интеллект анализ данных
Основа NumPy для интеллектуального анализа данных Основа Python (ниже)

предисловие

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

Универсальная функция

Универсальные функции, также известные как ufuncs, — это функции, которые выполняют поэлементные операции с данными ndarray.Существует множество ufuncs, представляющих собой простые поэлементные преобразования.Они называются унарными универсальными функциями, такими как функции sqrt или exp. Операции с квадратами и показатели с основанием e.

код показывает, как показано ниже

import numpy as np

arr = np.arange(10)
print(arr)
print(np.sqrt(arr))
print(np.exp(arr))

Результат выглядит следующим образом

[0 1 2 3 4 5 6 7 8 9]

[0.         1.         1.41421356 1.73205081 2.         2.23606798
 2.44948974 2.64575131 2.82842712 3.        ]
 
[1.00000000e+00 2.71828183e+00 7.38905610e+00 2.00855369e+01
 5.45981500e+01 1.48413159e+02 4.03428793e+02 1.09663316e+03
 2.98095799e+03 8.10308393e+03]

Бинарная универсальная функция принимает два массива в качестве аргументов и в результате возвращает массив. Например добавить, максимум. максимум вычисляет два

код показывает, как показано ниже

import numpy as np

arr1 = np.random.randn(8)
arr2 = np.random.randn(8)
print(arr1)
print(arr2)
print(np.add(arr1, arr2))
print(np.maximum(arr1, arr2))

Результат выглядит следующим образом

[-0.87594347 -0.12273679 -0.14468199  0.79499301  0.48304519  1.42611994
  0.18478049 -0.77634734]
  
[-1.22720664 -0.5021539  -0.46341915 -1.09360896 -0.11567866  1.44262963
  1.3676035   0.87728414]
  
[-2.10315011 -0.62489069 -0.60810113 -0.29861595  0.36736653  2.86874957
  1.55238399  0.1009368 ]
  
[-0.87594347 -0.12273679 -0.14468199  0.79499301  0.48304519  1.44262963
  1.3676035   0.87728414]

Обычно используемые общие функции следующие:

унарная общая функция

Имя функции описывать
abs Рассчитать абсолютное значение
aqrt Вычислить квадратный корень (эквивалентно arr**0,5)
square Вычислить квадрат (эквивалентно arr**2)

Двоичная универсальная функция

Имя функции описывать
add добавить
subtract Во втором массиве удалите элементы, содержащиеся в первых данных
multiply Умножить элементы массива
разделить, floor_divide Разделить или разделить
power Поднимите значение второго массива в степень первого массива
maximum, fmax Вычислить максимальное значение, fmax игнорирует NaN
минимум, фмин Вычислить минимальное значение, fmin игнорирует NaN
mod по модулю

Массивно-ориентированное программирование

Использование массивов NumPy позволяет выполнять различные задачи по обработке данных с помощью простых выражений массива без написания большого количества циклов. Этот метод использования выражений массива вместо явных циклов называется векторизацией.

В NumPy np.where — это векторизованная версия троичного выражения x if condition else y. Типичное использование where в анализе данных — создание нового массива из массива. Например, если вы хотите заменить все положительные значения в массиве на 2, а все отрицательные значения на -2, использовать where будет очень просто, пример следующий.

import numpy as np

arr = np.random.randn(4, 4)
arr1 = np.where(arr > 0, 2, -2)
print(arr)
print(arr1)

Результат выглядит следующим образом

[[-0.96494491  0.07379061 -1.27861559  1.00250552]
 [ 1.92868117 -0.71947891 -0.46209623 -0.25288092]
 [ 0.02809471  0.0156134  -0.41930177  0.4971246 ]
 [ 2.34854456  0.53715659  1.29290707 -1.5782504 ]]
 
[[-2  2 -2  2]
 [ 2 -2 -2 -2]
 [ 2  2 -2  2]
 [ 2  2  2 -2]]

Математические и статистические методы

Многие математические функции для вычисления статистики всего массива или аксиальных данных могут вызываться как методы типа массива, а также функции NumPy верхнего уровня. Пример следующий, mean — это функция для усреднения.

код показывает, как показано ниже

import numpy as np

arr = np.random.randn(5, 4)
print(arr)
print(arr.mean())
print(np.mean(arr))

Результат выглядит следующим образом

[[ 1.24215748  0.29118319 -0.15095341 -1.18315436]
 [ 0.34114254  0.67807088 -0.35850545 -0.0283722 ]
 [ 0.49374135  2.20303723  1.16090384  0.48882664]
 [ 0.7933995  -0.87707374  1.16431334 -0.9578789 ]
 [-0.96946034  0.80809035  1.2987827  -0.18680409]]
 
0.3125723270734698

0.3125723270734698

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

код показывает, как показано ниже

import numpy as np

arr = np.random.randn(5, 4)
print(arr)
print(arr.mean(1))
print(arr.sum(0))

Результат выглядит следующим образом

[[ 0.73681373 -0.47219867 -1.79257559  0.61201661]
 [-0.36828573 -0.94568274  0.19655693 -0.51870822]
 [-2.28839471  0.1913941   0.45310426  0.72263832]
 [ 0.78532131  0.86428249 -0.7225563  -0.6953199 ]
 [ 0.71222315  0.2859414   1.89264378 -0.60046051]]
 
[-0.22898598 -0.40902994 -0.23031451  0.0579319   0.57258696]

[-0.42232225 -0.07626342  0.02717308 -0.47983371]

Основные методы статистики массивов

метод описывать
sum Вычислить совокупную сумму всех элементов вдоль оси, и совокупная сумма массива нулевой длины равна 0
mean Среднее математическое, среднее значение массива нулевой длины NaN
стандарт, вар Стандартное отклонение и дисперсия
min, max Мин и Макс
argmin, argmax положение мин и макс
cumsum совокупная сумма элементов, начиная с 0
cumprod Накопить от 1

Как упоминалось ранее, логические значения приводятся к 1 (Истина) и 0 (Ложь), поэтому сумму часто можно использовать для подсчета количества Истин в логическом массиве.

код показывает, как показано ниже

import numpy as np

arr = np.random.randn(5, 4)
print(arr)
print((arr > 0).sum())

Результат выглядит следующим образом

[[ 6.71705665e-02  1.61629530e-02  1.76841029e+00  4.23138695e-01]
 [ 1.12480214e-03 -4.01747051e-01  7.13198516e-01  2.19474387e+00]
 [ 1.72505405e+00 -7.08562407e-01  4.29636061e-01  1.03900746e-01]
 [-5.64386934e-01  1.94245960e+00 -3.59287169e-01 -1.57861659e+00]
 [-2.87704451e-01 -5.07660259e-01  5.56993656e-01  1.28515104e+00]]
 
13

Уникальные значения и другая логика сбора

Numpy включает в себя некоторые базовые операции над наборами для одномерных ndarrays.Обычно используемый метод — np.unique, который возвращает массив, сформированный путем сортировки уникальных значений в массиве.

код показывает, как показано ниже

import numpy as np

names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])
print(np.unique(names))

Результат выглядит следующим образом

['Bob' 'Joe' 'Will']

Операции сбора над массивами

метод описывать
unique(x) Подсчитайте уникальные значения x и отсортируйте
intersect1d(x, y) Вычислить пересечение x и y и отсортировать
union1d(x, y) Вычислить объединение x и y и отсортировать
in1d(x, y) Вычисляет, содержит ли x значение y, возвращает логическое значение
setdiff1d(x,y) Вычислите набор разностей, элементы x, которые находятся в x, но не в y
setxor1d(x,y) Вычислить XOR, элементы в x или y, но не в пересечении x, y

Линейная алгебра

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

метод описывать
diag Верните диагональные элементы квадратной матрицы в виде одномерного массива или замените одномерный массив квадратной матрицей.
dot матричное скалярное произведение
trace Вычислите диагональные элементы и
det вычислить определитель матрицы
eig Вычислить собственные значения и собственные векторы квадратной матрицы
inv Вычислить обратную квадратную матрицу
svd сингулярное разложение
lstsq Вычислите решение методом наименьших квадратов для Ax = b

Наконец

Сегодня мы узнали об общих функциях NumPy, программировании, ориентированном на массивы, и некотором содержании, связанном с линейной алгеброй. Чтобы узнать больше интересных статей, вы можете подписаться на официальный аккаунт QStack.