Python Урок по NumPy за начинаещи
⚡ Умно обобщение
NumPy е основополагащият Python библиотека за числени изчисления, захранване на масиви, матрици, линейна алгебра и случайно вземане на проби. Този урок за NumPy ви превежда през инсталирането, създаването на масиви, преобразуването...ping, нарязване, статистика и матрична математика с runnable Python примери.

В какво е NumPy Python?
numpy е с отворен код Python библиотека за математическо, научно, инженерно и програмиране, свързано с наука за данни. Това е много полезна библиотека за математически и статистически операции в PythonРаботи перфектно с многомерни масиви и умножение на матрици и се интегрира лесно с C/C++ намлява Fortran.
За всеки научен проект, NumPy е инструментът, който трябва да знаете. Той е създаден за N-мерни масиви, линейна алгебра, генериране на случайни числа, преобразувания на Фурие и други.
NumPy дава Python първокласна поддръжка за многомерни масиви и матрици, плюс голям набор от математически операции, които действат върху тях. В това ръководство ще разгледаме основните функции, които трябва да знаете, преди да преминем към урока по „TensorFlow-
Защо да използвате NumPy?
NumPy е ефективен по отношение на паметта, така че може да обработва големи обеми от числови данни по-лесно от чистия език. Python списъци. Също така е много удобно за умножение на матрици и преобразуванеping, и е бърз, защото тежката работа е делегирана на компилирани C рутини. Всъщност, библиотеки като TensorFlow, PyTorch и Scikit-learn разчитат на NumPy масиви за матрични изчисления в back-end системата си, което прави NumPy тихата работна сила под повечето съвременни работни процеси в областта на науката за данни и изкуствения интелект.
Как да инсталирате NumPy
За да инсталирате библиотеката NumPy, вижте нашето ръководство Как да инсталирате TensorFlow. NumPy се инсталира по подразбиране с Anaconda.
В редките случаи, когато NumPy не е инсталиран, използвайте някоя от опциите по-долу.
Можете да инсталирате NumPy с помощта на Anaconda:
conda install -c anaconda numpy
- In Jupyter Бележник:
import sys
!conda install --yes --prefix {sys.prefix} numpy
Потребителите на Pip могат да инсталират или надстроят с една команда:
pip install --upgrade numpy
Импортирайте NumPy и проверете версията
Командата за импортиране на numpy е:
import numpy as np
Горният ред преименува пространството от имена NumPy на npТози пряк път ви позволява да добавяте префикс към функции, методи и атрибути на NumPy с np. вместо „ти“ping numpy.и това е стандартната конвенция, която ще намерите в екосистемата на NumPy.
За да проверите инсталираната версия на NumPy, използвайте командата по-долу:
print(np.__version__)
Изход:
2.1.3
NumPy 2.0 беше пуснат през юни 2024 г. и е текущата стабилна основна серия. Ако вашият проект все още зависи от 1.x API, закачете го към numpy<2 във вашия файл с изисквания, защото някои остарели псевдоними, като например np.float бяха премахнати във версия 2.0.
Какво е Python NumPy масив?
Масивите в NumPy изглеждат малко като Python списъци на пръв поглед, но се държат много различно. За читателите, които са нови в темата, нека изясним какво е ndarray и защо е важен.
Както подсказва името, масивът NumPy е централната структура от данни на библиотеката NumPy. Самото име е съкращение от „Numeric Python” или „Числен Python”, а ndarray е хомогенен блок памет с фиксиран размер, с известна форма и тип данни.
Създаване на масив NumPy
Най-лесният начин за създаване на масив в NumPy е да се започне от Python списък.
myPythonList = [1,9,8,3]
Конвертиране на Python списък към масив от NumPy, използвайки np.array.
numpy_array_from_list = np.array(myPythonList)
Покажете съдържанието на масива.
numpy_array_from_list
Изход:
array([1, 9, 8, 3])
На практика не е необходимо да се декларира a Python списък първо. Двете стъпки могат да бъдат комбинирани.
a = np.array([1,9,8,3])
ЗАБЕЛЕЖКА: Документацията на NumPy също споменава np.ndarray, Но np.array е препоръчителната фабрична функция за ежедневна употреба.
Можете също да създадете NumPy масив от кортеж по същия начин.
математически Operaции на масив
Можете да извършвате математически операции като събиране, извличанеtracция, деление и умножение върху масив. Синтаксисът е името на масива, последвано от оператора (+, -, *, /), последвано от операнда. Тези операции са векторизирани, което означава, че NumPy ги прилага към всеки елемент без изрично указание Python контур.
Пример:
numpy_array_from_list + 10
Изход:
array([11, 19, 18, 13])
Тази операция добавя 10 към всеки елемент от масива NumPy.
Форма на масив
Можете да проверите формата на масив с shape атрибут, достъпен чрез добавянето му към името на масива. По същия начин можете да проверите типа с dtype.
import numpy as np a = np.array([1,2,3]) print(a.shape) print(a.dtype) (3,) int64
Цялото число е стойност без десетична точка. Ако създадете масив с десетични числа, типът данни се променя на float.
#### Different type b = np.array([1.1,2.0,3.2]) print(b.dtype) float64
2 размерен масив
Можете да добавите измерение със запетая в скобите.
Обърнете внимание, че вътрешните кортежи трябва да се намират във външните скоби [].
### 2 dimension c = np.array([(1,2,3), (4,5,6)]) print(c.shape) (2, 3)
3 размерен масив
По-високите измерения могат да бъдат конструирани по същия начин.
### 3 dimension d = np.array([ [[1, 2,3], [4, 5, 6]], [[7, 8,9], [10, 11, 12]] ]) print(d.shape) (2, 2, 3)
| Цел | Code |
|---|---|
| Създаване на масив | масив ([1,2,3]) |
| отпечатайте формата | масив([.]).форма |
Какво е numpy.zeros()?
numpy.zeros() or np.zeros е Python функция, използвана за създаване на матрица, запълнена с нули. numpy.zeros() е полезно, когато трябва да инициализирате тегла по време на първата итерация в TensorFlow или да настроите буфери-заместители за други статистически задачи.
Синтаксис на функцията numpy.zeros().
numpy.zeros(shape, dtype=float, order='C')
Python numpy.zeros() Параметри
Тук
- Форма: формата на нулевия масив NumPy.
- Dtype: тип данни на елементите. Не е задължителен, а стойността по подразбиране е
float64. - Поръчка: по подразбиране е
C, което е оформлението по основни редове, използвано отnumpy.zeros()in Python.
Python numpy.zeros() Пример
import numpy as np np.zeros((2,2))
Изход:
array([[0., 0.], [0., 0.]])
Пример за numpy нула с Datatype
import numpy as np np.zeros((2,2), dtype=np.int16)
Изход:
array([[0, 0], [0, 0]], dtype=int16)
Какво е numpy.ones()?
функция np.ones(). създава матрица, запълнена с единици. numpy.ones() in Python е полезно, когато инициализирате тегла по време на първата итерация в TensorFlow и за други статистически задачи.
Python numpy.ones() Синтаксис
numpy.ones(shape, dtype=float, order='C')
Python numpy.ones() Параметри
Тук
- Форма: форма на np.ones Python Array.
- Dtype: тип данни на елементите. Не е задължителен, а стойността по подразбиране е
float64. - Поръчка: по подразбиране е
C, което е оформлението по основни редове.
Python numpy.ones() 2D масив с пример за тип данни
import numpy as np np.ones((1,2,3), dtype=np.int16)
Изход:
array([[[1, 1, 1], [1, 1, 1]]], dtype=int16)
numpy.reshape() функция в Python
Python Преоформяне на NumPy променя формата на масив, без да променя данните му. Може да се наложи да промените формата на данните от широк към дълъг формат или да преминете от 1D вектор към 2D матрица, преди да ги подадете към модел. np.reshape Функцията обработва това с едно извикване.
Синтаксис на np.reshape()
numpy.reshape(a, newShape, order='C')
Тук
a: масив, който искате да преоформите.
нова форма: новата желана форма.
Поръчка: по подразбиране е C, оформлението по основни редове.
Пример за NumPy Reshape
import numpy as np e = np.array([(1,2,3), (4,5,6)]) print(e) e.reshape(3,2)
Изход:
// Before reshape [[1 2 3] [4 5 6]]
//After Reshape array([[1, 2], [3, 4], [5, 6]])
numpy.flatten() в Python
Python NumPy Flatten връща копие на масива, свит в едно измерение. Когато работите с невронни мрежи като convnets, често се налага да изравните тензора на изображението, преди да го предадете на плътен слой. np.flatten() Функцията обработва това с едно извикване.
Синтаксис на np.flatten()
numpy.flatten(order='C')
Тук
Поръчка: по подразбиране е C, оформлението по основни редове.
Пример за NumPy Flatten
e.flatten()
Изход:
array([1, 2, 3, 4, 5, 6])
В какво е numpy.hstack(). Python?
numpy.hstack е Python функция, използвана за хоризонтално подреждане на последователности от входни масиви в един масив. С hstack(), добавяте данни по оста на колоната. Това е много удобен помощник в NumPy, когато трябва да обедините вектори на характеристики един до друг.
Нека да учим hstack in Python с пример.
Пример:
## Horizontal Stack import numpy as np f = np.array([1,2,3]) g = np.array([4,5,6]) print('Horizontal Append:', np.hstack((f, g)))
Изход:
Horizontal Append: [1 2 3 4 5 6]
В какво е numpy.vstack(). Python?
numpy.vstack е Python функция, използвана за вертикално подреждане на последователности от входни масиви в един масив. С vstack(), добавяте данни по оста на редовете, което е удобно, когато искате да комбинирате партиди от проби.
Нека го изучим с пример.
Пример:
## Vertical Stack import numpy as np f = np.array([1,2,3]) g = np.array([4,5,6]) print('Vertical Append:', np.vstack((f, g)))
Изход:
Vertical Append: [[1 2 3] [4 5 6]]
След изучаване на NumPy vstack намлява hstack, нека разгледаме пример, който генерира случайни числа в NumPy.
Генериране на случаен принцип Numbers използвайки NumPy
За генериране на случайни числа от Гаусово разпределение, използвайте:
numpy.random.normal(loc, scale, size)
Тук
- Място: средната стойност. Центърът на разпределението.
- Мащаб: стандартното отклонение.
- Размер: брой върнати проби.
Пример:
## Generate random numbers from a normal distribution normal_array = np.random.normal(5, 0.5, 10) print(normal_array) [5.56171852 4.84233558 4.65392767 4.946659 4.85165567 5.61211317 4.46704244 5.22675736 4.49888936 4.68731125]
Ако се изобрази графично, разпределението е подобно на следния график.

Обърнете внимание, че по-новият код все по-често използва съвременния API на генератора, np.random.default_rng(), което е препоръчителният заместител на наследството np.random.normal извиквания в NumPy 2.x.
Функция NumPy Asarray
- asarray() Функцията преобразува входните данни в масив. Входните данни могат да бъдат списък, кортеж, ndarray или подобна последователност.
Синтаксис:
numpy.asarray(data, dtype=None, order=None)
Тук
данни: данни, които искате да конвертирате в масив.
dtype: незадължително. Ако не е посочен, типът данни се извежда от входните данни.
Поръчка: по подразбиране е C, оформлението по редове. Другият вариант е F (Fortraколона-голяма в стил n).
Пример:
Да разгледаме следната двумерна матрица с четири реда и четири колони, запълнена с 1.
import numpy as np A = np.matrix(np.ones((4,4)))
Ако се опитате да промените стойност в матрицата чрез np.array, оригиналът не е променен. Причината е, че np.array създава копие на матрицата.
np.array(A)[2]=2 print(A) [[1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.]]
Матрицата е непроменена. Използвайте asarray когато искате да промените оригиналния масив на място. Нека видим какво се случва, когато зададете на третия ред стойност 2.
np.asarray(A)[2]=2 print(A)
Code Обяснение:
np.asarray(A) преобразува матрицата A към изглед на масив.
[2] избира третия ред.
Изход:
[[1. 1. 1. 1.] [1. 1. 1. 1.] [2. 2. 2. 2.] # new value [1. 1. 1. 1.]]
Какво е numpy.arange()?
numpy.arange() е вградена функция на NumPy, която връща ndarray, съдържащ равномерно разположени стойности в рамките на определен интервал. Например, за да създадете стойности от 1 до 10, можете да извикате np.arange() in Python.
Синтаксис:
numpy.arange(start, stop, step, dtype)
Python Параметри за подреждане на NumPy:
- Начало: начало на интервала за
np.arangein Python. - Спиранекрай на интервала.
- Стъпка: разстояние между стойностите. Стъпката по подразбиране е 1.
- Dtype: тип на изходния масив за NumPy
arange.
Пример:
import numpy as np np.arange(1, 11)
Изход:
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
Пример:
За да промените стъпката в този NumPy arange Например, добавете трето число в скобите. Това променя размера на стъпката.
import numpy as np np.arange(1, 14, 4)
Изход:
array([ 1, 5, 9, 13])
Функция NumPy Linspace
linspace връща равномерно разположени семпли между две крайни точки.
Синтаксис:
numpy.linspace(start, stop, num, endpoint)
Тук
- Начало: начална стойност на последователността.
- Спиране: крайна стойност на последователността.
- В: брой семпли за генериране. Стойността по подразбиране е 50.
- Endpoint: ако
True(по подразбиране),stopе последната стойност. АкоFalse,stopне е включен.
Пример:
Например, може да се използва за създаване на 10 равномерно разположени стойности от 1 до 5.
import numpy as np np.linspace(1.0, 5.0, num=10)
Изход:
array([1. , 1.44444444, 1.88888889, 2.33333333, 2.77777778, 3.22222222, 3.66666667, 4.11111111, 4.55555556, 5. ])
Ако не искате да включвате последната цифра в интервала, задайте endpoint да се False.
np.linspace(1.0, 5.0, num=5, endpoint=False)
Изход:
array([1. , 1.8, 2.6, 3.4, 4.2])
LogSpace NumPy функция в Python
logspace връща равномерно разположени числа в логаритмична скала. logspace споделя същите параметри като np.linspace.
Синтаксис:
numpy.logspace(start, stop, num, endpoint)
Пример:
np.logspace(3.0, 4.0, num=4)
Изход:
array([ 1000. , 2154.43469003, 4641.58883361, 10000. ])
Накрая, ако искате да проверите размера на паметта на един елемент в масив, можете да използвате itemsize.
x = np.array([1,2,3], dtype=np.complex128) x.itemsize
Изход:
16
Всеки елемент отнема 16 байта.
Индексиране и нарязване Python
Разделянето на данни е лесно с NumPy. Ще разрежем матрицата e. В Python, използвате квадратни скоби, за да върнете редове или колони.
Пример:
## Slice import numpy as np e = np.array([(1,2,3), (4,5,6)]) print(e) [[1 2 3] [4 5 6]]
Не забравяйте, че в NumPy първият индекс на масива започва от 0.
## First row print('First row:', e[0]) ## Second row print('Second row:', e[1])
Изход:
First row: [1 2 3] Second row: [4 5 6]
In Python, както и в много други езици,
- Стойността преди запетаята представлява редовете.
- Стойността след запетаята представлява колоните.
- Ако искате да изберете колона, добавете
:преди индекса на колоната. :означава, че искате всички редове от избраната колона.
print('Second column:', e[:,1])
Second column: [2 5]
За да върнете първите две стойности от втория ред, използвайте : за да изберете всички колони до втория индекс.
## Second Row, two values print(e[1, :2]) [4 5]
Статистически функции в Python
NumPy предоставя полезен набор от статистически функции за намиране на минимум, максимум, процентил, стандартно отклонение, дисперсия и други от даден масив. Най-често срещаните са изброени по-долу.
NumPy се доставя с надеждни статистически помощници, обобщени в таблицата.
| функция | numpy |
|---|---|
| Min | np.min() |
| макс | np.max() |
| Означава | np.mean() |
| Медиана | np.медиана() |
| Стандартно отклонение | np.std() |
Разгледайте следния масив:
Пример:
import numpy as np normal_array = np.random.normal(5, 0.5, 10) print(normal_array)
Изход:
[5.56171852 4.84233558 4.65392767 4.946659 4.85165567 5.61211317 4.46704244 5.22675736 4.49888936 4.68731125]
Пример за статистически функции на NumPy
### Min print(np.min(normal_array)) ### Max print(np.max(normal_array)) ### Mean print(np.mean(normal_array)) ### Median print(np.median(normal_array)) ### Sd print(np.std(normal_array))
Изход:
4.467042435266913 5.612113171990201 4.934841002270593 4.846995625786663 0.3875019367395316
Какво е numpy точков продукт?
numpy.dot е мощна функция за изчисление на матрици. Например, можете да изчислите скаларното произведение с np.dot. numpy.dot връща скаларното произведение на a намлява bи обработва както 1D, така и 2D масиви. За 2D входове извършва умножение на матрици.
Синтаксис:
numpy.dot(x, y, out=None)
параметри
Тук
x, yвходни масиви. x намлява y и двете трябва да са 1D или 2D за np.dot() да работи като скаларно произведение или матрично умножение.
от: незадължителен изходен аргумент, използван за заснемане на резултата. В противен случай се връща ndarray.
Връщане
Функцията numpy.dot() връща скаларното произведение на два масива x намлява yВръща скалар, когато и двете са 1D, в противен случай връща масив. Ако out е даден, този масив се връща.
Рейзовете
Скаларното произведение в Python повдига ValueError ако последното измерение на x не съвпада с предпоследното измерение на y.
Пример:
## Linear algebra ### Dot product: product of two arrays f = np.array([1,2]) g = np.array([4,5]) ### 1*4+2*5 np.dot(f, g)
Изход:
14
Матрично умножение в Python
NumPy matmul() Функцията връща матричното произведение на два масива. Ето как работи.
1) За 2D масиви, връща нормалното матрично произведение.
2) За размерности по-големи от 2, произведението се третира като стек от матрици.
3) Едноизмерен масив първо се преобразува в матрица, след което се изчислява произведението.
Инфиксът @ оператор, наличен от Python 3.5 е съкращение за matmul и се използва широко в съвременния код.
Синтаксис:
numpy.matmul(x, y, out=None)
Тук
x, y: входни масиви. Скаларни числа не са разрешени.
от: незадължителен параметър. Обикновено резултатът се съхранява в ndarray.
Пример:
По същия начин можете да изчислите умножение на матрици с np.matmul.
### Matmul: matrix product of two arrays h = [[1,2],[3,4]] i = [[5,6],[7,8]] ### 1*5+2*7 = 19 np.matmul(h, i)
Изход:
array([[19, 22], [43, 50]])
определящ
Ако трябва да изчислите детерминантата на матрица, използвайте np.linalg.det()NumPy се грижи за размерите вместо вас.
Пример:
## Determinant 2*2 matrix ### 5*8-7*6 np.linalg.det(i)
Изход:
-2.000000000000005
Обяснение на NumPy Broadcasting
Разпространението е правило, което позволява на NumPy да извършва аритметични действия върху масиви с различни форми, без да копира данни. Когато добавите скалар към 1D вектор или 1D вектор към 2D матрица, NumPy разтяга по-малкия операнд по липсващите оси, така че формите да се подравнят. Това избягва изричното... Python цикли и е една от основните причини, поради които кодът на NumPy изглежда бърз и сбит.
Две форми са съвместими за излъчване, когато, сравнени отдясно наляво, всяка двойка измерения е или равна, или едно от тях е равно на 1. Например, матрица от форми (3, 4) излъчвания срещу ред от форма (4,) или колона с форма (3, 1)Същата логика захранва нормализацията в машинното обучение, където подчиняватеtracвектор на средните стойности за всяка характеристика от партида от проби в един ред. Разпространението е и концептуален модел, използван от тензорни библиотеки като PyTorch, TensorFlow и JAX, така че правилата, които научавате тук, се прехвърлят директно в GPU кода.
Как NumPy захранва изкуствения интелект и машинното обучение
NumPy е в основата на почти всеки модерен Python AI стек. PyTorch тензорите, TensorFlow eager тензорите и JAX масивите предоставят едни и същи функции за излъчване, нарязване и преобразуване.ping API, който сте научили в NumPy ndarrays. Много уроци все още подават предварително обработени NumPy масиви в цикли за обучение на модели, а фреймворците ги приемат без нулева конверсия.
Три конкретни модела показват как NumPy се свързва с изкуствения интелект днес. Първо, инженерите по данни оформят суровите характеристики в NumPy масиви, преди да ги предадат на scikit-learn конвейери или на Hugging Face набори от данни. Второ, изследователите използват NumPy като базова линия на процесора и след това ги заместват с CuPy, който предоставя почти идентичен API, но работи на NVIDIA графични процесори чрез CUDA. Трето, JAX надгражда върху NumPy API, за да добави автоматична диференциация и компилация „точно навреме“, така че същият код, който работи на лаптопа, може да работи на TPU в облака. Изводът е, че уменията за работа с масиви, които изграждате с NumPy, се отнасят до всеки основен инструментариум за дълбоко обучение, което прави този урок полезна стъпка по пътя към разработването на изкуствен интелект.
