Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ программирования PythonΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 22

Автор Π ΠΎΠΌΠ°Π½ Π‘ΡƒΠ·ΠΈ

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ эта лСкция ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»Π΅ΠΉ ΠΊ пониманию ООП, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌΡƒ для практичСской Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Бсылки

Дэвид ΠœΠ΅Ρ€Ρ‚Ρ† http://www-106.ibm.com/developerworks/linux/library/l-pymeta.html

ЛСкция #5: ЧислСнныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹. ΠœΠ°Ρ‚Ρ€ΠΈΡ‡Π½Ρ‹Π΅ вычислСния.

Π’ Π΄Π°Π½Π½ΠΎΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ рассматриваСтся ΠΏΠ°ΠΊΠ΅Ρ‚ Numeric для осущСствлСния числСнных расчСтов ΠΈ выполнСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½Ρ‹Ρ… вычислСний, приводится ΠΎΠ±Π·ΠΎΡ€ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… вычислСний.

Numeric Python β€” это нСсколько ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ для вычислСний с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для ΠΌΠ½ΠΎΠ³ΠΈΡ… числСнных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠœΠΎΠ΄ΡƒΠ»ΡŒ Numeric вносит Π² Python возмоТности Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ систСм ΠΊΠ°ΠΊ MatLab, Octave (Π°Π½Π°Π»ΠΎΠ³ MatLab), APL, J, S+, IDL. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π½Π°ΠΉΠ΄ΡƒΡ‚ Numeric достаточно простым ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ. Π‘Ρ‚ΠΎΠΈΡ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ синтаксичСскиС возмоТности Python (связанныС с использованиСм срСзов) Π±Ρ‹Π»ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ для Numeric.

Numeric Python ΠΈΠΌΠ΅Π΅Ρ‚ срСдства для:

β€’ ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½Ρ‹Ρ… вычислСний LinearAlgebra;

β€’ Π±Ρ‹ΡΡ‚Ρ€ΠΎΠ³ΠΎ прСобразования Π€ΡƒΡ€ΡŒΠ΅ FFT;

β€’ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΠΌΠΈ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ MA;

β€’ ΡΡ‚атистичСского модСлирования RNG;

β€’ ΡΠΌΡƒΠ»ΡΡ†ΠΈΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ MatLab.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Numeric

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Numeric опрСдСляСт ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ тип–массив ΠΈ содСрТит большоС число Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с массивами. Массив β€” это Π½Π°Π±ΠΎΡ€ ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Ρ… элСмСнтов, доступных ΠΏΠΎ индСксам. ΠœΠ°ΡΡΠΈΠ²Ρ‹ модуля Numeric ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΈΠΌΠ΅Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ размСрности.

БозданиС массива

Для создания массива ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ array() с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ содСрТимого массива (Π² Π²ΠΈΠ΄Π΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… списков) ΠΈ Ρ‚ΠΈΠΏΠ°. Ѐункция array() Π΄Π΅Π»Π°Π΅Ρ‚ копию, Ссли Π΅Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ β€” массив. Ѐункция asarray() Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, Π½ΠΎ Π½Π΅ создаСт Π½ΠΎΠ²ΠΎΠ³ΠΎ массива, ΠΊΠΎΠ³Π΄Π° Π΅Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΡƒΠΆΠ΅ являСтся массивом:

>>> from Numeric import *

>>> print array([[1, 2], [3, 4], [5, 6]])

[[1 2]

 [3 4]

 [5 6]]

>>> print array([[1, 2, 3], [4, 5, 6]], Float)

[[ 1. 2. 3.]

 [ 4. 5. 6.]]

>>> print array([78, 85, 77, 69, 82, 73, 67], 'c')

[N U M E R I C]

Π’ качСствС элСмСнтов массива ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹: Int8–Int32, UnsignedInt8–UnsignedInt32, Float8–Float64, Complex8–Complex64 ΠΈ PyObject. Числа 8, 16, 32 ΠΈ 64 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ количСство Π±ΠΈΡ‚ΠΎΠ² для хранСния Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹. Π’ΠΈΠΏΡ‹ Int, UnsignedInteger, Float ΠΈ Complex ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ наибольшим принятым Π½Π° Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ значСниям. Π’ массивС ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ссылки Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ размСрностСй ΠΈ Π΄Π»ΠΈΠ½Π° массива ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ оси Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ„ΠΎΡ€ΠΌΠΎΠΉ массива (shape). Доступ ΠΊ Ρ„ΠΎΡ€ΠΌΠ΅ массива рСализуСтся Ρ‡Π΅Ρ€Π΅Π· Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ shape:

>>> from Numeric import *

>>> a = array(range(15), Int)

>>> print a.shape

(15,)

>>> print a

[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]

>>> a.shape = (3, 5)

>>> print a.shape

(3, 5)

>>> print a

[[ 0  1  2  3  4]

 [ 5  6  7  8  9]

 [10 11 12 13 14]]

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ массивов

ΠŸΡ€ΠΈΠ΄Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ массиву ΠΌΠΎΠΆΠ½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Numeric.reshape(). Π­Ρ‚Π° функция сразу создаСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚β€“ΠΌΠ°ΡΡΠΈΠ² Π½ΡƒΠΆΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

>>> import Numeric

>>> print Numeric.reshape("Π°Π±Ρ€Π°ΠΊΠ°Π΄Π°Π±Ρ€", (5, -1))

[[Π° Π±]

 [Ρ€ Π°]

 [ΠΊ Π°]

 [Π΄ Π°]

 [Π± Ρ€]]

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ –1 Π² ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ. ΠžΠ±Ρ‰Π΅Π΅ количСство элСмСнтов массива извСстно (10), поэтому Π΄Π»ΠΈΠ½Ρƒ вдоль ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· размСрностСй Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

Π§Π΅Ρ€Π΅Π· Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ flat ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ΅ прСдставлСниС массива:

>>> a = array([[1, 2], [3, 4]])

>>> b = a.flat

>>> b

array([1, 2, 3, 4])

>>> b[0] = 9

>>> b

array([9, 2, 3, 4])

>>> a

array([[9, 2],

       [3, 4]])

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Π½ΠΎΠ²Ρ‹ΠΉ Π²ΠΈΠ΄ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ массива, поэтому присваиваниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π΅Π³ΠΎ элСмСнтам ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ измСнСниям Π² исходном массивС.

Ѐункция Numeric.resize() ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° Numeric.reshape, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ число элСмСнтов:

>>> print Numeric.resize("NUMERIC", (3, 2))

[[N U]

 [M E]

 [R I]]

>>> print Numeric.resize("NUMERIC", (3, 4))

[[N U M E]

 [R I C N]

 [U M E R]]

Ѐункция Numeric.zeros() ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ массив ΠΈΠ· ΠΎΠ΄Π½ΠΈΡ… Π½ΡƒΠ»Π΅ΠΉ, Π° Numeric.ones() β€” ΠΈΠ· ΠΎΠ΄Π½ΠΈΡ… Π΅Π΄ΠΈΠ½ΠΈΡ†. Π•Π΄ΠΈΠ½ΠΈΡ‡Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Numeric.identity(n):

>>> print Numeric.zeros((2,3))

[[0 0 0]

 [0 0 0]]

>>> print Numeric.ones((2,3))

[[1 1 1]

 [1 1 1]]

>>> print Numeric.identity(4)

[[1 0 0 0]

 [0 1 0 0]

 [0 0 1 0]

 [0 0 0 1]]

Для копирования массивов ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ copy():

>>> import Numeric

>>> a = Numeric.arrayrange(9)

>>> a.shape = (3, 3)

>>> print a

[[0 1 2]

 [3 4 5]

 [6 7 8]]

>>> a1 = a.copy()

>>> a1[0, 1] = -1 # опСрация Π½Π°Π΄ ΠΊΠΎΠΏΠΈΠ΅ΠΉ

>>> print a

[[0 1 2]

 [3 4 5]

 [6 7 8]]

Массив ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² список с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° tolist():

>>> a.tolist()

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

Π‘Ρ€Π΅Π·Ρ‹

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹β€“ΠΌΠ°ΡΡΠΈΠ²Ρ‹ Numeric ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ синтаксис выдСлСния срСза. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ записи срСзов. Ѐункция Numeric.arrayrange() являСтся Π°Π½Π°Π»ΠΎΠ³ΠΎΠΌ range() для массивов.

>>> import Numeric

>>> a = Numeric.arrayrange(24) + 1

>>> a.shape = (4, 6)

>>> print a # исходный массив

[[ 1  2  3  4  5  6]

 [ 7  8  9 10 11 12]

 [13 14 15 16 17 18]

 [19 20 21 22 23 24]]

>>> print a[1,2]     # элСмСнт 1,2

9

>>> print a[1,:]     # строка 1

[ 7 8 9 10 11 12]

>>> print a[1]       # Ρ‚ΠΎΠΆΠ΅ строка 1

[ 7 8 9 10 11 12]

>>> print a[:,1]     # столбСц 1

[ 2 8 14 20]

>>> print a[-2,:]    # прСдпослСдняя строка

[13 14 15 16 17 18]

>>> print a[0:2,1:3] # ΠΎΠΊΠ½ΠΎ 2x2

[[2 3]

[8 9]]

>>> print a[1,::3]   # ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ элСмСнт строки 1

[ 7 10]

>>> print a[:,:: -1] # элСмСнты строк Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС

[[ 6  5  4  3  2  1]

 [12 11 10  9  8  7]

 [18 17 16 15 14 13]

 [24 23 22 21 20 19]]

Π‘Ρ€Π΅Π· Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ массив (ΠΊΠ°ΠΊ это ΠΈΠΌΠ΅Π΅Ρ‚ мСсто со списками), Π° Π΄Π°Π΅Ρ‚ доступ ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ части массива. Π”Π°Π»Π΅Π΅ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ мСняСтся Π½Π° 0 ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ элСмСнт строки 1:

>>> a[1,::3] = Numeric.array([0,0])

>>> print a

[[ 1  2  3  4  5  6]

 [ 0  8  9  0 11 12]

 [13 14 15 16 17 18]

 [19 20 21 22 23 24]]

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ достаточно рСдкая синтаксичСская конструкция: срСз с ΠΌΠ½ΠΎΠ³ΠΎΡ‚ΠΎΡ‡ΠΈΠ΅ΠΌ (Ellipsis). ΠœΠ½ΠΎΠ³ΠΎΡ‚ΠΎΡ‡ΠΈΠ΅ ставится для указания ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ числа ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… размСрностСй (:,:,...,:):

>>> import Numeric

>>> a = Numeric.arrayrange(24) + 1

>>> a.shape = (2,2,2,3)

>>> print a

[[[[ 1  2  3]

   [ 4  5  6]]

  [[ 7  8  9]

   [10 11 12]]]

 [[[13 14 15]

   [16 17 18]]

  [[19 20 21]

   [22 23 24]]]]

>>> print a[0,...] # 0–й Π±Π»ΠΎΠΊ

[[[ 1 2 3]

  [ 4 5 6]]

 [[ 7 8 9]

  [10 11 12]]]

>>> print a[0,:,:,0] # срСз ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈ послСднСй размСрностям

[[ 1  4]

 [ 7 10]]

>>> print a[0,...,0] # Ρ‚ΠΎ ΠΆΠ΅, Π½ΠΎ с использованиСм многоточия

[[ 1  4]

 [ 7 10]]

Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Numeric опрСдСляСт Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для примСнСния ΠΊ элСмСнтам массива. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ массивам, Π½ΠΎ ΠΈ ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌ (ΠΊ соТалСнию, ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ). Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ массивы.

Ѐункция ОписаниС add(x, y), subtract(x, y) Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ multiply(x, y), divide(x, y) Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ remainder(x, y), fmod(x, y) ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ остатка ΠΎΡ‚ дСлСния (для Ρ†Π΅Π»Ρ‹Ρ… чисСл ΠΈ чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой) power(x) Π’ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ sqrt(x) Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ корня ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ negative(x), absolute(x), fabs(x) Π‘ΠΌΠ΅Π½Π° Π·Π½Π°ΠΊΠ° ΠΈ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ceil(x), floor(x) НаимСньшСС (наибольшСС) Ρ†Π΅Π»ΠΎΠ΅, большСС (мСньшСС) ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρƒ hypot(x, y) Π”Π»ΠΈΠ½Π° Π³ΠΈΠΏΠΎΡ‚Π΅Π½ΡƒΠ·Ρ‹ (Π΄Π°Π½Ρ‹ Π΄Π»ΠΈΠ½Ρ‹ Π΄Π²ΡƒΡ… ΠΊΠ°Ρ‚Π΅Ρ‚ΠΎΠ²) sin(x), cos(x), tan(x) ВригономСтричСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ arcsin(x), arccos(x), arctan(x) ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ тригономСтричСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ arctan2(x, y) АрктангСнс ΠΎΡ‚ частного Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° sinh(x), cosh(x), tanh(x) ГипСрболичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ arcsinh(x), arccosh(x), arctanh(x) ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ гипСрболичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ exp(x) ЭкспонСнта (ex) log(x), log10(x) ΠΠ°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ дСсятичный Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌΡ‹ maximum(x, y), minimum(x, y) ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ conjugate(x) БопряТСниС (для комплСксных чисСл) equal(x, y), not_equal(x, y) Π Π°Π²Π½ΠΎ, Π½Π΅ Ρ€Π°Π²Π½ΠΎ greater(x, y), greater_equal(x, y) Π‘ΠΎΠ»ΡŒΡˆΠ΅, большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ less(x, y), less_equal(x, y) МСньшС, мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ logical_and(x, y), logical_or(x, y) ЛогичСскиС И, Π˜Π›Π˜ logical_xor(x, y) ЛогичСскоС ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ Π˜Π›Π˜ logical_not(x) ЛогичСскиС НЕ bitwise_and(x, y), bitwise_or(x, y) ΠŸΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ И, Π˜Π›Π˜ bitwise_xor(x, y) ΠŸΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ Π˜Π›Π˜ invert(x) ΠŸΠΎΠ±ΠΈΡ‚ΠΎΠ²Π°Ρ инвСрсия left_shift(x, n), right_shift(x, n) ΠŸΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ сдвиги Π²Π»Π΅Π²ΠΎ ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° n Π±ΠΈΡ‚ΠΎΠ²

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Ρ‚ΠΈΠΏΠ° ufunc ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ массивам поэлСмСнтно. Π­Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹: