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

Предпосылка

Вы должны быть знакомы с основами Jupyter Notebook или Google Colab.

Содержание

  1. Установка NumPy
  2. Импорт библиотеки
  3. Знакомство с массивом
  4. Индексация
  5. Некоторые встроенные функции
  6. Тип ссылки
  7. Случайное распределение

Примечание

Если у вас возникнут какие-либо проблемы во время кодирования, вы можете обратиться к моему блокноту Jupyter на Github.

Чтобы получить максимальную пользу от этого кода урока вместе со мной построчно.

Установка NumPy

Если вы работаете над Google Colab, вам не нужно устанавливать NumPy, так как в нем уже есть все необходимое.

Если вы работаете в Jupyter Notebook, вы можете установить NumPy, выполнив следующую команду в Anaconda Prompt:

pip install numpy

Если вы используете conda, вы можете установить NumPy из каналов defaults или conda-forge:

# Best practice, use an environment rather than install in the base env
conda create -n my-env
conda activate my-env
# If you want to install from conda-forge
conda config --env --add channels conda-forge
# The actual install command
conda install numpy

Импорт библиотеки

Чтобы импортировать библиотеку NumPy, используйте следующий код в своем Colab или блокноте:

import numpy as np

Знакомство с массивом

Объявить массив:

my_lst = [1,2,3,4,5]
arr = np.array(my_lst)

Чтобы узнать тип массива:

type(arr)

Просмотрите массив:

arr

Найдите форму массива:

arr.shape

Преобразование массива 1D в массив 3D:

my_lst1=[1,2,3,4,5]
my_lst2=[2,3,4,5,6]
my_lst3=[9,7,6,8,9]
arr=np.array([my_lst1,my_lst2,my_lst3])
arr

Теперь, если вы проверите форму, получится (3,5), что обозначает 3 строки и 5 столбцов.

arr.shape

Вы можете изменить его на 5 строк и 3 столбца. Но убедитесь, что количество элементов в исходном массиве такое же, как и в новом массиве, иначе будет выдана ошибка.

arr.reshape(5,3)

Индексация

Доступ к элементам массива и печать третьего индекса (в соответствии с индексацией на основе 0):

arr=np.array([1,2,3,4,5,6,7,8,9])
arr[3]

Создание нового массива, как мы делали ранее:

my_lst1=[1,2,3,4,5]
my_lst2=[2,3,4,5,6]
my_lst3=[9,7,6,8,9]
arr=np.array([my_lst1,my_lst2,my_lst3])

Печать элементов с 1-й строки до последней строки и столбцов с 3-й строки до последней строки:

## arr[<row_start>:<row_end+1>,<col_start>:<col_end+1>,<step>]
arr[1:,3:]

Некоторые встроенные функции

«arange»: это встроенная функция, которая возвращает все значения от первого параметра до последнего параметра (за исключением последнего параметра).

arr=np.arange(0,10)
arr

«linespace»: печатает заданное количество значений (третий параметр) от первого параметра до последнего (исключая последний параметр).

np.linspace(1,10,50)

Тип ссылки

Функция копирования и трансляция: следующий код копирует 100 из 3-го элемента в последний.

arr[3:]=100
arr

Вы получите следующий вывод:

array([ 0, 1, 2, 100, 100, 100, 100, 100, 100, 100])

Теперь попробуйте:

arr1=arr
arr1[3:]=500
print(arr1)
print(arr)

ты получишь:

[  0   1   2 500 500 500 500 500 500 500]
[  0   1   2 500 500 500 500 500 500 500]

Это ясно показывает, что любое изменение в «arr1» отражается в «arr». Но это не то, чего мы хотим. Мы просто хотим скопировать массив. Для этого мы можем использовать функцию копирования:

arr1=arr.copy()
print(arr)
arr1[3:]=1000
print(arr1)

Теперь изменение не отражается в исходном массиве:

[   0    1    2 1000 1000 1000 1000 1000 1000 1000]
[  0   1   2 500 500 500 500 500 500 500]

Если вы хотите узнать, какие элементы меньше определенного числа:

val=2
arr<2

Но это не говорит нам о значениях элементов, которые меньше 2 . Для этого вы можете сделать:

arr[arr<2]

Чтобы сделать массив из единиц:

np.ones(4)

Чтобы сделать массив единиц как целое число:

np.ones(4,dtype=int)

Чтобы сделать двумерный массив единиц как число с плавающей запятой:

np.ones((2,5),dtype=float)

Случайное распределение

Чтобы получить двумерный массив случайных элементов в диапазоне (0,1]:

np.random.rand(3,3)

Чтобы получить целочисленные значения из «стандартного нормального распределения»:

arr_ex=np.random.randn(4,4)
arr_ex

Чтобы получить 8 целочисленных значений от 0 до 100:

np.random.randint(0,100,8)

Чтобы получить случайные поплавки в полуоткрытом интервале [0,0, 1,0):

np.random.random_sample((1,5))

Это все вилки! Надеюсь, вам всем понравилось изучение NumPy. Не забудьте похлопать, если вам понравился мой блог, и подписывайтесь на меня, чтобы оставаться в курсе. Продолжай учиться:)