NumPy — это библиотека для языка программирования Python, добавляющая поддержку больших многомерных массивов и матриц, а также большой набор высокоуровневых математических функций для работы с этими массивами.
Предпосылка
Вы должны быть знакомы с основами Jupyter Notebook или Google Colab.
Содержание
- Установка NumPy
- Импорт библиотеки
- Знакомство с массивом
- Индексация
- Некоторые встроенные функции
- Тип ссылки
- Случайное распределение
Примечание
Если у вас возникнут какие-либо проблемы во время кодирования, вы можете обратиться к моему блокноту 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. Не забудьте похлопать, если вам понравился мой блог, и подписывайтесь на меня, чтобы оставаться в курсе. Продолжай учиться:)