Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠœΠ°ΡΡΠΈΠ²Ρ‹ NumPy | NumPy

3.1. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ

НуТно Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π½Π°Ρ‚ΡŒ Python. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ «Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ вовсС Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΠΎΠ³ΠΎ руководства Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ досконально ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ этот язык. ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ руководством окаТСтся Π²ΠΏΠΎΠ»Π½Π΅ достаточно.

ВсС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π² консоли IDE Spyder дистрибутива Anaconda Π½Π° Python вСрсии 3.5. ΠΈ NumPy вСрсии 1.14.0. ΠŸΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ‚Π°ΠΊ ΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² любом Π΄Ρ€ΡƒΠ³ΠΎΠΌ дистрибутивС Python 3.Ρ… вСрсии ΠΈ послСднСй вСрсиСй ΠΏΠ°ΠΊΠ΅Ρ‚Π° NumPy. Но Ссли Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ всС ΠΆΠ΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, Ρ‚ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ вашСго дистрибутива, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° связана с Π΅Π³ΠΎ особСнностями.

НапримСр, Ссли Π² своСм дистрибутивС Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ IDE Spyder, Ρ‚ΠΎ Π² Π½Π΅ΠΉ Π½Π΅Ρ‚ Python консоли, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ°ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΈ, ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠ΅ΡΡ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΊΠΎΠ΄ΠΎΠΌ Π² IDLE. ΠŸΡ€ΠΈ этом Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΈ всС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, прСдставлСнныС здСсь, Ρ‚ΠΎΠΆΠ΅ Π»ΡƒΡ‡ΡˆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π² Python консоли. Но Π½Π΅Ρ‚, Python консоль использовалась Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ лишь ΠΏΠΎ тСхничСским ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ связаны с Ρ€Π΅Π΄Π°ΠΊΡ‚ΡƒΡ€ΠΎΠΉ, вСрсткой ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π°. Консоль IPython ΠΈΠΌΠ΅Π΅Ρ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС прСимущСств.

3.2. ΠžΡΠ½ΠΎΠ²Ρ‹

Π“Π»Π°Π²Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ NumPy — это ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹ΠΉ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив. Π§Π°Ρ‰Π΅ всСго это одномСрная ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ двумСрная Ρ‚Π°Π±Π»ΠΈΡ†Π°, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅ элСмСнтами ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ числами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ проиндСксированы ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… чисСл. Π’ NumPy, элСмСнты этого ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ осями, Π° число осСй Ρ€Π°Π½Π³ΠΎΠΌ.

Π§Ρ‚ΠΎ Π±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌ, сначала Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π°:

>>> import numpy as np

Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ numpy ΠΏΠΎΠ΄ псСвдонимом np ΡƒΠΆΠ΅ стало общСпринятой, нСгласной, Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠ΅ΠΉ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌ. Бпособов создания массивов NumPy довольно ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ с самого Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ — созданиС массива ΠΈΠ· Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ списка Python:

>>> a = np.array([11, 22, 33, 44, 55, 66, 77, 88, 99])
>>> 
>>> a
array([11, 22, 33, 44, 55, 66, 77, 88, 99])

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив (словосочСтаниС «Ρ€Π°Π½Π³ массива» вряд Π»ΠΈ приТивСтся Π² русском языкС), Ρ‚.Π΅. Ρƒ Π½Π΅Π³ΠΎ всСго ΠΎΠ΄Π½Π° ось вдоль ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ происходит индСксированиС Π΅Π³ΠΎ элСмСнтов.

ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив numpy

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ числу 33 ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΌ способом:

>>> a[2]
33

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ-Ρ‚ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ интСрСсного ΠΈ Π½Π΅Ρ‚ Π² этих массивах, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡Π°Π»ΠΎ ΠΊΡ€ΠΎΠ»ΠΈΡ‡ΡŒΠ΅ΠΉ Π½ΠΎΡ€Ρ‹. ΠžΡ†Π΅Π½ΠΈΡ‚Π΅:

>>> a[[7, 0, 3, 3, 3, 0, 7]]
array([88, 11, 44, 44, 44, 11, 88])

ВмСсто ΠΎΠ΄Π½ΠΎΠ³ΠΎ индСкса, ΡƒΠΊΠ°Π·Π°Π½ Ρ†Π΅Π»Ρ‹ΠΉ список индСксов. А Π²ΠΎΡ‚ Π΅Ρ‰Π΅ Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ вмСсто индСкса ΡƒΠΊΠ°ΠΆΠ΅ΠΌ логичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

>>> a[a > 50]
array([55, 66, 77, 88, 99])

ЦСль этих Π΄Π²ΡƒΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² — Π½Π΅ ΡƒΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π³ΠΎΠ»ΠΎΠ²ΠΎΠ»ΠΎΠΌΠΊΡƒ, Π° ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ возмоТности индСксирования массивов NumPy. Π‘ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ устроСна индСксация ΠΌΡ‹ разбСрСмся Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π³Π»Π°Π²Π΅. Π§Ρ‚ΠΎ Π΅Ρ‰Π΅ интСрСсного ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ? Π’Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ вычислСния:

>>> 2*a + 10
array([ 32,  54,  76,  98, 120, 142, 164, 186, 208])
>>> 
>>> np.sin(a)**2 + np.cos(a)**2
array([1., 1., 1., 1., 1., 1., 1., 1., 1.])

Π’Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ — ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ матСматичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ сразу Π½Π°Π΄ всСми элСмСнтами массивов. А это Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ нСобходимости Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ вычислСния Π² Ρ†ΠΈΠΊΠ»Π΅. Π’ случаС ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Π½Π΅ Ρ‚Π°ΠΊΠΎΠΉ ΡƒΠΆ бонус, вСдь Π΅ΡΡ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹. Но Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивам:

>>> a = np.arange(12)
>>> a
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
>>> 
>>> a = a.reshape(3, 4)
>>> a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

БСйчас ΠΌΡ‹ создали массив с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ np.arange(), которая Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ range() языка Python. Π—Π°Ρ‚Π΅ΠΌ, ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Ρ„ΠΎΡ€ΠΌΡƒ массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° reshape(), Ρ‚.Π΅. Π½Π° самом Π΄Π΅Π»Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ этот массив ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

>>> a = np.arange(12).reshape(3, 4)
>>> a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ, Π΄Π°Π½Π½Ρ‹ΠΉ массив выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив numpy

Глядя Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ, становится понятно, Ρ‡Ρ‚ΠΎ пСрвая ось (ΠΈ индСкс соотвСтствСнно) — это строки, вторая ось — это столбцы. Π’.Π΅. ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ элСмСнт 9 ΠΌΠΎΠΆΠ½ΠΎ простой ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

>>> a[2][1]    #  Ρ€Π°Π²Π½ΠΎΡΠΈΠ»ΡŒΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ a[2, 1]
9

Π‘Π½ΠΎΠ²Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ — всС ΠΊΠ°ΠΊ Π² Python. Π”Π°, Ρ‚Π°ΠΊ ΠΈ Π΅ΡΡ‚ΡŒ, ΠΈ, это ΠΊΡ€ΡƒΡ‚ΠΎ! Π•Ρ‰Π΅ ΠΊΡ€ΡƒΡ‚ΠΎ, Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ NumPy добавляСт ΠΊ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌΡƒ ΠΈ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠΌΡƒ синтаксису Python, вСсьма ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ Ρ‚Ρ€ΡŽΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ — транслированиС массивов:

>>> b = [2, 3, 4, 5]
>>> 
>>> a*b
array([[ 0,  3,  8, 15],
       [ 8, 15, 24, 35],
       [16, 27, 40, 55]])

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π±Π΅Π· всяких Ρ†ΠΈΠΊΠ»ΠΎΠ² (ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²), ΠΌΡ‹ ΡƒΠΌΠ½ΠΎΠΆΠΈΠ»ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ столбСц ΠΈΠ· массива

a Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт ΠΈΠ· массива b. Π’.Π΅. ΠΌΡ‹ ΠΊΠ°ΠΊ Π±Ρ‹ транслировали (Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ стСпСни ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ — растянули) массив b ΠΏΠΎ массиву a.

Π’ΠΎ ΠΆΠ΅ самоС ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкой массива a:

>>> c = [[10], [20], [30]]
>>> 
>>> a + c
array([[10, 11, 12, 13],
       [24, 25, 26, 27],
       [38, 39, 40, 41]])

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΡ‹ просто ΠΏΡ€ΠΈΠ±Π°Π²ΠΈΠ»ΠΈ ΠΊ массиву a массив-столбСц c. И ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ, Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚Π΅Π»ΠΈ. БСйчас ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ транслирования — это Ρ‚Π΅ΠΌΠ° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π³Π»Π°Π²Ρ‹. ВмСсто этого я Ρ…ΠΎΡ‡Ρƒ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами, особСнно с массивами большСй размСрности, становится ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΌ удобство Ρ€Π°Π±ΠΎΡ‚Ρ‹ с элСмСнтами массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны вдоль ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ — Π΅Π³ΠΎ осСй.

НапримСр, Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΈ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты ΠΏΠΎ строкам ΠΈ столбцам. Для Π½Π°Ρ‡Π°Π»Π° создадим массив ΠΈΠ· случайных чисСл ΠΈ ΠΏΡƒΡΡ‚ΡŒ, для нашСго удобства, эти числа Π±ΡƒΠ΄ΡƒΡ‚ Ρ†Π΅Π»Ρ‹ΠΌΠΈ:

>>> a = np.random.randint(0, 15, size = (4, 6))
>>> a
array([[ 9, 12,  5,  3,  1,  7],
       [ 2, 12, 10, 11, 14,  9],
       [ 4,  4,  9, 11,  5,  2],
       [12,  8,  6,  8,  9,  3]])

ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт Π² Π΄Π°Π½Π½ΠΎΠΌ массивС это:

>>> a.min()
1

А Π²ΠΎΡ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты ΠΏΠΎ столбцам ΠΈ строкам:

>>> a.min(axis = 0)    #  ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты ΠΏΠΎ столбцам
array([2, 4, 5, 3, 1, 2])
>>> 
>>> a.min(axis = 1)    #  ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты ΠΏΠΎ строкам
array([1, 2, 2, 3])

Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π·Π°Π»ΠΎΠΆΠ΅Π½ΠΎ практичСски Π²ΠΎ всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ NumPy:

>>> a.mean(axis = 0)    #  срСднСС ΠΏΠΎ столбцам
array([6.75, 9.  , 7.5 , 8.25, 7.25, 5.25])
>>> 
>>> np.std(a, axis = 1)    #  стандартноС ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΏΠΎ строкам
array([3.67045259, 3.77123617, 3.13138237, 2.74873708])

Π§Ρ‚ΠΎΠΆ, ΠΌΡ‹ рассмотрСли ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€ΡŽΠΊΠΈ NumPy. Но Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ позиционируСтся ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго ΠΊΠ°ΠΊ Π½Π°ΡƒΡ‡Π½Ρ‹ΠΉ инструмСнт. Π§Ρ‚ΠΎ насчСт вычислСний, ΠΈΡ… скорости ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ памяти?

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, создадим Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив:

>>> a = np.arange(48).reshape(4, 3, 4)
>>> a
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]],

       [[24, 25, 26, 27],
        [28, 29, 30, 31],
        [32, 33, 34, 35]],

       [[36, 37, 38, 39],
        [40, 41, 42, 43],
        [44, 45, 46, 47]]])

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ? На самом Π΄Π΅Π»Π΅ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΈΡ€ вовсС Π½Π΅ ограничиваСтся Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ, Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ. Π•Ρ‰Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π΅Π½Π·ΠΎΡ€Ρ‹, ΠΊΠ²Π°Ρ‚Π΅Ρ€Π½ΠΈΠΎΠ½Ρ‹, ΠΎΠΊΡ‚Π°Π²Ρ‹. А Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΌ ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΌ прСдставлСнии, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±ΠΈΡ€ΠΆΠ΅Π²Ρ‹Π΅ Ρ‚ΠΎΡ€Π³ΠΈ ΠΏΠΎ всСм инструмСнтам, Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π² Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅, Π° Ρ‚ΠΎΡ€Π³ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π±ΠΈΡ€ΠΆ Π² Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΌ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρ‚Π°ΠΊΠΈΠΌΠΈ слоТными вычислСниями занимаСтся ΠΎΡ‡Π΅Π½ΡŒ нСбольшоС количСство людСй, Π½ΠΎ Π½Π°Π΄ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ эти люди Π΄Π²ΠΈΠ³Π°ΡŽΡ‚ Π½Π°ΡƒΠΊΡƒ ΠΈ ΠΈΠ½Π΄ΡƒΡΡ‚Ρ€ΠΈΡŽ Π²ΠΏΠ΅Ρ€Π΅Π΄. Π”Π° ΠΈ слово «ΡΠ»ΠΎΠΆΠ½ΠΎΠ΅» ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ синонимом «ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎΠ΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ… Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΌΡ‹ ΠΎΡ‚Π²Π»Π΅ΠΊΠ»ΠΈΡΡŒ… Π²ΠΎΡ‚ наш Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив:

ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив numpy

Визуализация (ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅) позволяСт сразу Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ устроСна индСксация Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов. НапримСр, Ссли Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ ΠΈΠ· Π΄Π°Π½Π½ΠΎΠ³ΠΎ массива число 31, Ρ‚ΠΎ достаточно Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ:

>>> a[2][1][3]    #  ΠΈΠ»ΠΈ a[2, 1, 3]
31

Но, Ρ‡Ρ‚ΠΎ Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΠ·Π½Π°Ρ‚ΡŒ побольшС ΠΎΠ± этом массивС. Π’ самом Π΄Π΅Π»Π΅, Ρƒ массивов Π΅ΡΡ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΉ ряд Π²Π°ΠΆΠ½Ρ‹Ρ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ². НапримСр, количСство осСй массива (Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ), ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΡ‡Π΅Π½ΡŒ большими массивами, Π½Π΅ всСгда Π»Π΅Π³ΠΊΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ:

>>> a.ndim
3

Массив a Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ. Но ΠΈΠ½ΠΎΠ³Π΄Π° становится интСрСсно, Π° Π½Π° сколько ΠΆΠ΅ большой массив ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°ΠΌΠΈ. НапримСр, ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠ½ Ρ„ΠΎΡ€ΠΌΡ‹, Ρ‚.Π΅. сколько элСмСнтов располоТСно вдоль ΠΊΠ°ΠΆΠ΄ΠΎΠΉ оси? ΠžΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ позволяСт ΠΌΠ΅Ρ‚ΠΎΠ΄ ndarray.shape:

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

ΠœΠ΅Ρ‚ΠΎΠ΄ ndarray.size просто Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±Ρ‰Π΅Π΅ количСство элСмСнтов массива:

>>> a.size
48

Π•Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΡΡ‚Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ вопрос — сколько памяти Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ наш массив? Иногда Π΄Π°ΠΆΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ вопрос — Π²Π»Π΅Π·Π΅Ρ‚ Π»ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ массив послС всСх вычислСний Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ? Π§Ρ‚ΠΎ Π±Ρ‹ Π½Π° Π½Π΅Π³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π°Π΄ΠΎ Π·Π½Π°Ρ‚ΡŒ, сколько «Π²Π΅ΡΠΈΡ‚» ΠΎΠ΄ΠΈΠ½ элСмСнт массива:

>>> a.itemsize    #  эквивалСнтно ndarray.dtype.itemsize
4

ndarray.itemsize Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ элСмСнта Π² Π±Π°ΠΉΡ‚Π°Ρ…. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ·Π½Π°Ρ‚ΡŒ сколько «Π²Π΅ΡΠΈΡ‚» наш массив:

>>> a.size*a.itemsize
192

Π˜Ρ‚ΠΎΠ³ΠΎ — 192 Π±Π°ΠΉΡ‚Π°. На самом Π΄Π΅Π»Π΅, Ρ€Π°Π·ΠΌΠ΅Ρ€ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ массивом памяти, зависит Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ количСства элСмСнтов Π² Π½Π΅ΠΌ, Π½ΠΎ ΠΈ ΠΎΡ‚ ΠΈΡΠΏΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…:

>>> a.dtype
dtype('int32')

dtype('int32') — ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ цСлочислСнный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ для хранСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ числа выдСляСтся 32 Π±ΠΈΡ‚Π° памяти. Но Ссли ΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ вычислСния с массивом, Ρ‚ΠΎ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ:

>>> b = a/3.14
>>> 
>>> b
array([[[ 0.        ,  0.31847134,  0.63694268,  0.95541401],
        [ 1.27388535,  1.59235669,  1.91082803,  2.22929936],
        [ 2.5477707 ,  2.86624204,  3.18471338,  3.50318471]],

       [[ 3.82165605,  4.14012739,  4.45859873,  4.77707006],
        [ 5.0955414 ,  5.41401274,  5.73248408,  6.05095541],
        [ 6.36942675,  6.68789809,  7.00636943,  7.32484076]],

       [[ 7.6433121 ,  7.96178344,  8.28025478,  8.59872611],
        [ 8.91719745,  9.23566879,  9.55414013,  9.87261146],
        [10.1910828 , 10.50955414, 10.82802548, 11.14649682]],

       [[11.46496815, 11.78343949, 12.10191083, 12.42038217],
        [12.7388535 , 13.05732484, 13.37579618, 13.69426752],
        [14.01273885, 14.33121019, 14.64968153, 14.96815287]]])
>>> 
>>> 
>>> b.dtype
dtype('float64')

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ массив — массив b ΠΈ Π΅Π³ΠΎ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… 'float64' — вСщСствСнныС числа (числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ) Π΄Π»ΠΈΠ½Π½ΠΎΠΉ 64 Π±ΠΈΡ‚Π°. А Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€:

>>> b.size*b.itemsize
384

Π’ΠΎΠ³Π΄Π° массив a — 192 Π±Π°ΠΉΡ‚Π°, массив b — 384 Π±Π°ΠΉΡ‚Π°. А Π² ΠΎΠ±Ρ‰Π΅ΠΌ, получаСтся, 576 Π±Π°ΠΉΡ‚ — Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎ для соврСмСнных объСмов ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, Π½ΠΎ ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΌΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сСйчас приходится ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ совсСм нСмалСнькиС.

ΠœΡ‹ с Π²Π°ΠΌΠΈ ΡΠΎΠ±ΠΈΡ€Π°Π»ΠΈΡΡŒ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° вопросы ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ вычислСний Π² NumPy, Π½ΠΎ это Ρ‚ΠΎΠΆΠ΅ Ρ‚Π΅ΠΌΠ° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Π³Π»Π°Π²Ρ‹. ΠœΠΎΠ³Ρƒ лишь ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ вычислСний, ΠΎΡ‡Π΅Π½ΡŒ сильно зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΏΠΈΡˆΠΈΡ‚Π΅. НапримСр, частоС ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ присваиваниС массивов, ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ бСсполСзному ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΡŽ памяти, Π° Ρ€Π°Π±ΠΎΡ‚Π° ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ NumPy Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… настроСк, особСнно Π² Ρ†ΠΈΠΊΠ»Π°Ρ…, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ нСсколько ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ Π·Π°Π΄Π°Ρ‡Π° ΠΏΠΎ использованию всСго Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΈ ΠΆΠ΅Π»Π΅Π·Π°, Π½Π΅ такая ΡƒΠΆ ΠΈ простая, Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Ρ€Π΅ΡˆΠ°Π΅ΠΌΠ°Ρ Π·Π°Π΄Π°Ρ‡Π°.


3.3. НапослСдок

Если Π²Ρ‹ Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ, Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ скоро ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π² использовании NumPy Ρ‚Π°ΠΊ ΠΆΠ΅ прост ΠΊΠ°ΠΊ ΠΈ Python. Но, Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ, Π΄Π΅Π»ΠΎ Π΄ΠΎΠΉΠ΄Π΅Ρ‚ Π΄ΠΎ слоТных Π·Π°Π΄Π°Ρ‡ ΠΈ Π²ΠΎΡ‚ Ρ‚ΠΎΠ³Π΄Π° начнСтся самоС интСрСсноС: Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ гуглится, Π° бСсчислСнныС «ΠΏΠΎΡ‡Ρ‚ΠΈ» подходящиС совСты приводят ΠΊ Π½Π΅ΠΎΠ±ΡŠΡΡΠ½ΠΈΠΌΡ‹ΠΌ ΡΠ²Π΅Ρ€Ρ…ΡŠΠ΅ΡΡ‚Π΅ΡΡ‚Π²Π΅Π½Π½Ρ‹ΠΌ послСдствиям. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π² Ρ‚Π°ΠΊΠΎΠΉ ситуации?

  1. Π³ΡƒΠ³Π»ΠΈΡ‚ΡŒ ΡƒΠΏΠΎΡ€Π½Π΅Π΅ ΠΈ ΡΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ ΠΊ самому Π΄Π½Ρƒ поисковой Π²Ρ‹Π΄Π°Ρ‡ΠΈ;
  2. Π³ΡƒΠ³Π»ΠΈΡ‚ΡŒ Π½Π° английском языкС, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ, Π½Π° английском ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° порядки большС Ρ‡Π΅ΠΌ Π½Π° русском;
  3. Ссли Π½Π΅ ΠΏΠΎΠΌΠΎΠ³ ΠΏΡƒΠ½ΠΊΡ‚ 2, Ρ‚ΠΎ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ просто маньяк ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ, ΠΈ Ρ‡Ρ‚ΠΎ Π±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ свою ΠΌΠ°Π½ΠΈΠ°ΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ, Π²Π°ΠΌ придСтся Π³ΡƒΠ³Π»ΠΈΡ‚ΡŒ Π½Π° китайском языкС, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π° китайском ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° порядки большС Ρ‡Π΅ΠΌ Π½Π° английском.

Π­Ρ‚ΠΎ ΡˆΡƒΡ‚ΠΊΠ° ΠΈ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Π°Ρ рСкомСндация ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Но, Ссли Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎ, Ρ‚ΠΎ просто ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΠΉΡ‚Π΅ΡΡŒ Π·Π΄Ρ€Π°Π²ΠΎΠ³ΠΎ смысла. Π“Π΄Π΅ этот Π·Π΄Ρ€Π°Π²Ρ‹ΠΉ смысл начинаСтся, Π° Π³Π΄Π΅ заканчиваСтся Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ. import this Π²Π°ΠΌ Π² ΠΏΠΎΠΌΠΎΡ‰ΡŒ:

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Если Π²Ρ‹ Ρ€Π°Π½ΡŒΡˆΠ΅ пользовались R ΠΈΠ»ΠΈ matlab, Ρ‚ΠΎ вас Ρ‚ΠΎΠΆΠ΅ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ приятных ΡΡŽΡ€ΠΏΡ€ΠΈΠ·ΠΎΠ², ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄ΠΈΠ½ — придСтся мСньшС ΡΡ‚ΡƒΡ‡Π°Ρ‚ΡŒ ΠΏΠΎ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅.

ru.stackoverflow toster python_su_forum cyberforum

pyprog.pro

NumPy Π² Python. Π§Π°ΡΡ‚ΡŒ 1 / Habr

ΠŸΡ€Π΅Π΄ΠΈΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°


Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ суток, Π₯Π°Π±Ρ€. Π—Π°ΠΏΡƒΡΠΊΠ°ΡŽ Ρ†ΠΈΠΊΠ» статСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ нСбольшого ΠΌΠ°Π½Π° ΠΏΠΎ numpy, ссылочка. ΠŸΡ€ΠΈΡΡ‚Π½ΠΎΠ³ΠΎ чтСния.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅


NumPy это open-source ΠΌΠΎΠ΄ΡƒΠ»ΡŒ для python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт ΠΎΠ±Ρ‰ΠΈΠ΅ матСматичСскиС ΠΈ числовыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² Π²ΠΈΠ΄Π΅ ΠΏΡ€Π΅-скомпилированных, быстрых Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Они ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ Π² высокоуровнСвыС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹. Они ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΠΎΠΌ MatLab. NumPy (Numeric Python) прСдоставляСт Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для манипуляции с большими массивами ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ. SciPy (Scientific Python) Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» numpy ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠ΅ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ минимизация, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π€ΡƒΡ€ΡŒΠ΅, рСгрСссия, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Π΅ матСматичСскиС Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ.

Установка


Если Ρƒ вас Π΅ΡΡ‚ΡŒ Python(x, y) (ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°: Python(x, y), это дистрибутив свободного Π½Π°ΡƒΡ‡Π½ΠΎΠ³ΠΎ ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния для числСнных расчётов, Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° основС языка программирования Python ΠΈ большого числа ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ (Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ)) Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Windows, Ρ‚ΠΎ Π²Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ. Если ΠΆΠ΅ Π½Π΅Ρ‚, Ρ‚ΠΎ послС установки python, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, сначала NumPy ΠΏΠΎΡ‚ΠΎΠΌ SciPy. Установка доступна здСсь. Π‘Π»Π΅Π΄ΡƒΠΉΡ‚Π΅ установкС Π½Π° страницС, Ρ‚Π°ΠΌ всё ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎ понятно.

НСмного Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ


БообщСство NumPy ΠΈ SciPy ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ½Π»Π°ΠΉΠ½ руководство, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠ΅ Π³Π°ΠΉΠ΄Ρ‹ ΠΈ Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»Ρ‹, Ρ‚ΡƒΡ‚: docs.scipy.org/doc.

Π˜ΠΌΠΏΠΎΡ€Ρ‚ модуля numpy

Π•ΡΡ‚ΡŒ нСсколько ΠΏΡƒΡ‚Π΅ΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ это β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ простоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

>>> import numpy

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, для большого количСства Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ numpy, ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ numpy.X снова ΠΈ снова. ВмСсто этого Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Π³Ρ‡Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Ρ‚Π°ΠΊ:
>>> import numpy as np

Π­Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ позволяСт Π½Π°ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ numpy ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ np.X вмСсто numpy.X. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ numpy прямо Π² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‡ΠΊΡƒ, Π° Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ:
>>> from numpy import *

Однако, этот Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π΅ привСтствуСтся Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° python, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡƒΠ±ΠΈΡ€Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ структуры, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ прСдоставляСт. Π”ΠΎ ΠΊΠΎΠ½Ρ†Π° этого Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»Π° ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° (import numpy as np).

ΠœΠ°ΡΡΠΈΠ²Ρ‹


Π“Π»Π°Π²Π½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ numpy являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ array. ΠœΠ°ΡΡΠΈΠ²Ρ‹ схоТи со списками Π² python, ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ элСмСнты массива Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊ float ΠΈ int. Π‘ массивами ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ числовыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с большим объСмом ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Ρ€Π°Π·Ρ‹ быстрСС ΠΈ, Π³Π»Π°Π²Π½ΠΎΠ΅, Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ эффСктивнСС Ρ‡Π΅ΠΌ со списками.

БозданиС массива из списка:

a = np.array([1, 4, 5, 8], float)
>>> a
array([ 1.,  4.,  5.,  8.])
>>> type(a)
<class 'numpy.ndarray'>

Π—Π΄Π΅ΡΡŒ функция array ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°: список для ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ Π² массив ΠΈ Ρ‚ΠΈΠΏ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта. Ко всСм элСмСнтам ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠΈ Ρ‚Π°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ Π²Ρ‹ Π±Ρ‹ это Π΄Π΅Π»Π°Π»ΠΈ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ списками:
>>> a[:2]
array([ 1.,  4.])
>>> a[3]
8.0
>>> a[0] = 5.
>>> a
array([ 5.,  4.,  5.,  8.])

ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ списков ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² скобках. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°):
>>> a = np.array([[1, 2, 3], [4, 5, 6]], float)
>>> a
array([[ 1.,  2.,  3.],
[ 4.,  5.,  6.]])
>>> a[0,0]
1.0
>>> a[0,1]
2.0

Array slicing Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈ с ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ, примСняя ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ срСз, ΠΊΠ°ΠΊ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ для установлСнного измСрСния. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ «:» Π² ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΈ для указывания использования всСх элСмСнтов этого измСрСния:
>>> a = np.array([[1, 2, 3], [4, 5, 6]], float)
>>> a[1,:]
array([ 4.,  5.,  6.])
>>> a[:,2]
array([ 3.,  6.])
>>> a[-1:, -2:]
array([[ 5.,  6.]])

ΠœΠ΅Ρ‚ΠΎΠ΄ shape Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство строк ΠΈ столбцов Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅:
>>> a.shape
(2, 3)

ΠœΠ΅Ρ‚ΠΎΠ΄ dtype Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, хранящихся Π² массивС:
>>> a.dtype
dtype('float64')

Π’ΡƒΡ‚ float64, это числовой Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π² numpy, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния вСщСствСнных чисСл Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ точности. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΆΠ΅ float Π² Python.

ΠœΠ΅Ρ‚ΠΎΠ΄ len Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ измСрСния (оси):

a = np.array([[1, 2, 3], [4, 5, 6]], float)
>>> len(a)
2

ΠœΠ΅Ρ‚ΠΎΠ΄ in ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ элСмСнта Π² массивС:
>>> a = np.array([[1, 2, 3], [4, 5, 6]], float)
>>> 2 in a
True
>>> 0 in a
False

ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π΄Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив. БлСдуя ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΈΠ· дСсяти элСмСнтов Π²ΠΎ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив, состоящий ΠΈΠ· пяти строк ΠΈ Π΄Π²ΡƒΡ… столбцов:
>>> a = np.array(range(10), float)
>>> a
array([ 0.,  1.,  2., 3.,  4.,  5.,  6.,  7.,  8.,  9.])
>>> a = a.reshape((5, 2))
>>> a
array([[ 0.,  1.],
[ 2.,  3.],
[ 4.,  5.],
[ 6.,  7.],
[ 8.,  9.]])
>>> a.shape
(5, 2)

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΌΠ΅Ρ‚ΠΎΠ΄ reshape создаСт Π½ΠΎΠ²Ρ‹ΠΉ массив, Π° Π½Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ.

Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π²Π²ΠΈΠ΄Ρƒ, связываниС ΠΈΠΌΠ΅Π½ Π² python Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ с массивами. ΠœΠ΅Ρ‚ΠΎΠ΄ copy ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания ΠΊΠΎΠΏΠΈΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ массива Π² памяти:

>>> a = np.array([1, 2, 3], float)
>>> b = a
>>> c =  a.copy()
>>> a[0] = 0
>>> a
array([0., 2., 3.])
>>> b
array([0., 2., 3.])
>>> c
array([1., 2., 3.])

Бписки ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ с массивов:
>>> a = np.array([1, 2, 3], float)
>>> a.tolist()
[1.0, 2.0, 3.0]
>>> list(a)
[1.0, 2.0, 3.0]

МоТно Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив Π² Π±ΠΈΠ½Π°Ρ€Π½ΡƒΡŽ строку (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, Π½Π΅ human-readable Ρ„ΠΎΡ€ΠΌΡƒ). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ tostring для этого. ΠœΠ΅Ρ‚ΠΎΠ΄ fromstring Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ прСобразования. Π­Ρ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для сохранСния большого количСства Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„Π°ΠΉΠ»Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ считаны Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.
>>> a = array([1, 2, 3], float)
>>> s = a.tostring()
>>> s
'\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x08@'
>>> np.fromstring(s)
array([ 1.,  2.,  3.])

Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ массива ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ.
>>> a = array([1, 2, 3], float)
>>> a
array([ 1.,  2.,  3.])
>>> a.fill(0)
>>> a
array([ 0.,  0.,  0.])

ВранспонированиС массивов Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡ€ΠΈ этом создаСтся Π½ΠΎΠ²Ρ‹ΠΉ массив:
>>> a = np.array(range(6), float).reshape((2, 3))
>>> a
array([[ 0.,  1.,  2.],
[ 3.,  4.,  5.]])
>>> a.transpose()
array([[ 0.,  3.],
[ 1.,  4.],
[ 2.,  5.]])

ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° flatten:
>>> a = np.array([[1, 2, 3], [4, 5, 6]], float)
>>> a
array([[ 1.,  2.,  3.],
[ 4.,  5.,  6.]])
>>> a.flatten()
array([ 1.,  2.,  3.,  4.,  5.,  6.])

Π”Π²Π° ΠΈΠ»ΠΈ большС массивов ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° concatenate:
>>> a = np.array([1,2], float)
>>> b = np.array([3,4,5,6], float)
>>> c = np.array([7,8,9], float)
>>> np.concatenate((a, b, c))
array([1., 2., 3., 4., 5., 6., 7., 8., 9.])

Если массив Π½Π΅ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ось, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ соСдинСниС. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (Π½Π΅ задавая значСния оси), соСдинСниС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΡŽ:
>>> a = np.array([[1, 2], [3, 4]], float)
>>> b = np.array([[5, 6], [7,8]], float)
>>> np.concatenate((a,b))
array([[ 1.,  2.],
[ 3.,  4.],
[ 5.,  6.],
[ 7.,  8.]])
>>> np.concatenate((a,b), axis=0)
array([[ 1.,  2.],
[ 3.,  4.],
[ 5.,  6.],
[ 7.,  8.]])
>>>
np.concatenate((a,b), axis=1)
array([[ 1.,  2.,  5.,  6.],
[ 3.,  4.,  7.,  8.]])

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ, Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π° ΠΏΡ€ΠΈ использовании константы newaxis Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках:
>>> a = np.array([1, 2, 3], float)
>>> a
array([1., 2., 3.])
>>> a[:,np.newaxis]
array([[ 1.],
[ 2.],
[ 3.]])
>>> a[:,np.newaxis].shape
(3,1)
>>> b[np.newaxis,:]
array([[ 1.,  2.,  3.]])
>>> b[np.newaxis,:].shape
(1,3)

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‚ΡƒΡ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ массив Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ; созданный ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ newaxis ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½. ΠœΠ΅Ρ‚ΠΎΠ΄ newaxis ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ создания Π½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰Π΅-ΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½ΠΎΠΉ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅.

На этом Ρƒ нас ΠΊΠΎΠ½Π΅Ρ† ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π°. Бпасибо Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.

habr.com

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΈ массивы NumPy Π² Python

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° β€” это двухмСрная структура Π΄Π°Π½Π½Ρ‹Ρ…, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ числа располоТСны Π² Π²ΠΈΠ΄Π΅ строк ΠΈ столбцов. НапримСр:

Π­Ρ‚Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° являСтся ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ΠΉ Ρ‚Ρ€ΠΈ Π½Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° состоит ΠΈΠ· 3 строк ΠΈ 4 столбцов.

Python Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ встроСнного Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… для ΠΌΠ°Ρ‚Ρ€ΠΈΡ†. Но ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ список ΠΊΠ°ΠΊ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ. НапримСр:

A = [[1, 4, 5], 
    [-5, 8, 9]]

Π­Ρ‚ΠΎΡ‚ список являСтся ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ΠΉ Π½Π° 2 строки ΠΈ 3 столбца.

ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎ спискам Python, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ эту ΡΡ‚Π°Ρ‚ΡŒΡŽ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ списком.

A = [[1, 4, 5, 12], 
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]]

print("A =", A) 
print("A[1] =", A[1])      # вторая строка
print("A[1][2] =", A[1][2])   # Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ элСмСнт Π²Ρ‚ΠΎΡ€ΠΎΠΉ строки
print("A[0][-1] =", A[0][-1])   # послСдний элСмСнт ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки

column = [];        # пустой список
for row in A:
  column.append(row[2])   

print("3rd column =", column)

Когда ΠΌΡ‹ запустим эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

A = [[1, 4, 5, 12], [-5, 8, 9, 0], [-6, 7, 11, 19]]
A [1] = [-5, 8, 9, 0]
A [1] [2] = 9
A [0] [- 1] = 12
3-ΠΉ столбСц = [5, 9, 11]

ИспользованиС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… списков Π² качСствС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для простых Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. Но Π² Python Π΅ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивный способ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ – NumPy .

NumPy β€” это Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ для Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… вычислСний, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ N-ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ NumPy, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ,

  • ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ: Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ NumPy?
  • Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² Windows, скачайтС ΠΈ установитС дистрибутив anaconda Python. Он поставляСтся вмСстС с NumPy ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ.

ПослС установки NumPy ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ.

NumPy прСдоставляСт собой ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив чисСл (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π° самом Π΄Π΅Π»Π΅ являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ). Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

import numpy as np
a = np.array([1, 2, 3])
print(a)               # Π’Ρ‹Π²ΠΎΠ΄: [1, 2, 3]
print(type(a))         # Π’Ρ‹Π²ΠΎΠ΄: <class 'numpy.ndarray'>

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, класс массива NumPy называСтся ndarray.

БущСствуСт нСсколько способов создания массивов NumPy.

import numpy as np

A = np.array([[1, 2, 3], [3, 4, 5]])
print(A)

A = np.array([[1.1, 2, 3], [3, 4, 5]]) # Массив чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой
print(A)

A = np.array([[1, 2, 3], [3, 4, 5]], dtype = complex) # Массив составных чисСл
print(A)

Когда Π²Ρ‹ запуститС эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

[[1 2 3]
 [3 4 5]]

[[1.1 2. 3.]
 [3. 4. 5.]]

[[1. + 0.j 2. + 0.j 3. + 0.j]
 [3. + 0.j 4. + 0.j 5. + 0.j]]

import numpy as np

zeors_array = np.zeros( (2, 3) )
print(zeors_array)

'''
 Π’Ρ‹Π²ΠΎΠ΄:
 [[0. 0. 0.]
  [0. 0. 0.]]
'''

ones_array = np.ones( (1, 5), dtype=np.int32 ) // ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ dtype
print(ones_array)      # Π’Ρ‹Π²ΠΎΠ΄: [[1 1 1 1 1]]

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ dtype β€” 32 Π±ΠΈΡ‚Π° (4 Π±Π°ΠΉΡ‚Π°). Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, этот массив ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ значСния ΠΎΡ‚ -2-31 Π΄ΠΎ 2-31-1.

import numpy as np

A = np.arange(4)
print('A =', A)

B = np.arange(12).reshape(2, 6)
print('B =', B)

''' 
Π’Ρ‹Π²ΠΎΠ΄:
A = [0 1 2 3]
B = [[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]]
'''

Π£Π·Π½Π°ΠΉΡ‚Π΅ большС ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… способах создания массива NumPy .

Π’Ρ‹ΡˆΠ΅ ΠΌΡ‹ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ слоТСниС, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† ΠΈ транспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹. ΠœΡ‹ использовали Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ списки, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ эти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Рассмотрим, ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Ρƒ ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ массив NumPy.

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ +, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты Π΄Π²ΡƒΡ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ† NumPy.

import numpy as np

A = np.array([[2, 4], [5, -6]])
B = np.array([[9, -3], [3, 6]])
C = A + B      # слоТСниС ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… элСмСнтов
print(C)

''' 
Π’Ρ‹Π²ΠΎΠ΄:
[[11  1]
 [ 8  0]]
 '''

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ Π΄Π²Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ dot(). Π£Π·Π½Π°ΠΉΡ‚Π΅ большС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ numpy.dot .

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: * ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для умноТСния массива (умноТСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… элСмСнтов Π΄Π²ΡƒΡ… массивов), Π° Π½Π΅ умноТСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

import numpy as np

A = np.array([[3, 6, 7], [5, -3, 0]])
B = np.array([[1, 1], [2, 1], [3, -3]])
C = a.dot(B)
print(C)

''' 
Π’Ρ‹Π²ΠΎΠ΄:
[[ 36 -12]
 [ -1   2]]
'''

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ numpy.transpose для вычислСния транспонирования ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

import numpy as np

A = np.array([[1, 1], [2, 1], [3, -3]])
print(A.transpose())

''' 
Π’Ρ‹Π²ΠΎΠ΄:
[[ 1  2  3]
 [ 1  1 -3]]
'''

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, NumPy Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ упростил Π½Π°ΡˆΡƒ Π·Π°Π΄Π°Ρ‡Ρƒ.

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ элСмСнтам ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ индСкс. НачнСм с ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива NumPy.

import numpy as np
A = np.array([2, 4, 6, 8, 10])

print("A[0] =", A[0])     # ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт     
print("A[2] =", A[2])     # Π’Ρ€Π΅Ρ‚ΠΈΠΉ элСмСнт     
print("A[-1] =", A[-1])   # ПослСдний элСмСнт     

Когда Π²Ρ‹ запуститС эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

A [0] = 2
A [2] = 6
A [-1] = 10

Π’Π΅ΠΏΠ΅Ρ€ΡŒ выясним, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ элСмСнтам Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² основном прСдставляСт собой ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ).

import numpy as np

A = np.array([[1, 4, 5, 12],
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]])

#  ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки
print("A[0][0] =", A[0][0])  

# Π’Ρ€Π΅Ρ‚ΠΈΠΉ элСмСнт Π²Ρ‚ΠΎΡ€ΠΎΠΉ строки
print("A[1][2] =", A[1][2])

# ПослСдний элСмСнт послСднСй строки
print("A[-1][-1] =", A[-1][-1])     

Когда ΠΌΡ‹ запустим эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

A [0] [0] = 1
A [1] [2] = 9
A [-1] [- 1] = 19
import numpy as np

A = np.array([[1, 4, 5, 12], 
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]])

print("A[0] =", A[0]) # ΠŸΠ΅Ρ€Π²Π°Ρ строка
print("A[2] =", A[2]) # Π’Ρ€Π΅Ρ‚ΡŒΡ строка
print("A[-1] =", A[-1]) # ПослСдняя строка (Ρ‚Ρ€Π΅Ρ‚ΡŒΡ строка Π² Π΄Π°Π½Π½ΠΎΠΌ случаС)

Когда ΠΌΡ‹ запустим эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

A [0] = [1, 4, 5, 12]
A [2] = [-6, 7, 11, 19]
A [-1] = [-6, 7, 11, 19]
import numpy as np

A = np.array([[1, 4, 5, 12], 
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]])

print("A[:,0] =",A[:,0]) # ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ столбСц
print("A[:,3] =", A[:,3]) # Π§Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ столбСц
print("A[:,-1] =", A[:,-1]) # ПослСдний столбСц (Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ столбСц Π² Π΄Π°Π½Π½ΠΎΠΌ случаС)

Когда ΠΌΡ‹ запустим эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

A [:, 0] = [1 -5 -6]
A [:, 3] = [12 0 19]
A [:, - 1] = [12 0 19]

Если Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄, ΠΏΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ Ρ€Π°Π·Π΄Π΅Π» Β«Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹Β».

Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива NumPy Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΡŽ списка. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

import numpy as np
letters = np.array([1, 3, 5, 7, 9, 7, 5])

# с 3-Π³ΠΎ ΠΏΠΎ 5-Ρ‹ΠΉ элСмСнты
print(letters[2:5])        # Π’Ρ‹Π²ΠΎΠ΄: [5, 7, 9]

# с 1-Π³ΠΎ ΠΏΠΎ 4-Ρ‹ΠΉ элСмСнты
print(letters[:-5])        # Π’Ρ‹Π²ΠΎΠ΄: [1, 3]   

# с 6-Π³ΠΎ Π΄ΠΎ послСднСго элСмСнта
print(letters[5:])         # Π’Ρ‹Π²ΠΎΠ΄:[7, 5]

# с 1-Π³ΠΎ Π΄ΠΎ послСднСго элСмСнта
print(letters[:])          # Π’Ρ‹Π²ΠΎΠ΄:[1, 3, 5, 7, 9, 7, 5]

# список Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС
print(letters[::-1])          # Π’Ρ‹Π²ΠΎΠ΄:[5, 7, 9, 7, 5, 3, 1]

Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим, ΠΊΠ°ΠΊ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ.

import numpy as np

A = np.array([[1, 4, 5, 12, 14], 
    [-5, 8, 9, 0, 17],
    [-6, 7, 11, 19, 21]])

print(A[:2, :4])  # Π΄Π²Π΅ строки, Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ столбца

''' Π’Ρ‹Π²ΠΎΠ΄:
[[ 1  4  5 12]
 [-5  8  9  0]]
'''


print(A[:1,])  # пСрвая строка, всС столбцы

''' Π’Ρ‹Π²ΠΎΠ΄:
[[ 1  4  5 12 14]]
'''

print(A[:,2])  # всС строки, Π²Ρ‚ΠΎΡ€ΠΎΠΉ столбСц

''' Π’Ρ‹Π²ΠΎΠ΄:
[ 5  9 11]
'''

print(A[:, 2:5])  # всС строки, с Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ ΠΏΠΎ пятый столбСц
''' Π’Ρ‹Π²ΠΎΠ΄:
[[ 5 12 14]
 [ 9  0 17]
 [11 19 21]]
'''

ИспользованиС NumPy вмСсто Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… списков Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ. ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ NumPy, Ссли Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Python для Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ….

Данная публикация прСдставляСт собой ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ Β«Python Matrices and NumPy ArraysΒ» , ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ Π΄Ρ€ΡƒΠΆΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.Ρ€Ρƒ

www.internet-technologies.ru

Π£Ρ‡Π΅Π±Π½ΠΈΠΊ ΠΏΠΎ NumPy — Визуализация ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² для быстрого изучСния

ΠŸΠ°ΠΊΠ΅Ρ‚ NumPy являСтся Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡ‹ΠΌ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΎΠΌ Python. Он тянСт Π½Π° сСбС Π°Π½Π°Π»ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ…, машинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ Π½Π°ΡƒΡ‡Π½Ρ‹Π΅ вычислСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ сущСствСнно ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†. НСкоторыС Π²Π΅Π΄ΡƒΡ‰ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ NumPy ΠΊΠ°ΠΊ основной элСмСнт своСй инфраструктуры. К ΠΈΡ… числу относятся scikit-learn, SciPy, pandas ΠΈ tenorflow. Помимо возмоТности Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΠΎ косточкам числовыС Π΄Π°Π½Π½Ρ‹Π΅, ΡƒΠΌΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с NumPy Π΄Π°Π΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ прСимущСство ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ Π±ΠΎΠ»Π΅Π΅ слоТных сцСнариСв Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Numpy Π² Python

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны основныС способы использования NumPy Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚ΠΈΠΏΡ‹ прСдставлСния Π΄Π°Π½Π½Ρ‹Ρ… (Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ, тСкст ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅) ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠ΄Π°Ρ‡Π΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ машинного обучСния.

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

МоТно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив NumPy (ΠΎΠ½ ΠΆΠ΅ ndarray), ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Π΅ΠΌΡƒ список Python, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ np.array(). Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Python создаСт массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Массив NumPy

НСрСдки случаи, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ NumPy ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π» значСния массива.

ΠœΡ‹ собрали ВОП Книг для Python программиста ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ быстро ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ язык программирования Python. Бписок ΠΊΠ½ΠΈΠ³: Книги ΠΏΠΎ Python

Для этого NumPy ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠ°ΠΊ ones(), zeros() ΠΈ random.random(). ВрСбуСтся просто ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΈΠΌ количСство элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ:

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ массива NumPy

ПослС создания массивов ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠΈ довольно Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌΠΈ способами.

АрифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ массивами NumPy

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΄Π²Π° массива NumPy ΠΈ продСмонстрируСм Π²Ρ‹Π³ΠΎΠ΄Ρƒ ΠΈΡ… использования.

ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ data ΠΈ ones:

ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² Python

ΠŸΡ€ΠΈ слоТСнии массивов ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ значСния ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ряда. Π­Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ просто, достаточно Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ data + ones:

БлоТСниС массивов Python

Новичкам ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΉΡ‚ΠΈΡΡŒ ΠΏΠΎ Π΄ΡƒΡˆΠ΅ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ использованиС абстракций ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ написания Ρ†ΠΈΠΊΠ»ΠΎΠ² for с вычислСниями. Π­Ρ‚ΠΎ отличная абстракция, которая позволяСт ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ Π½Π° Π±ΠΎΠ»Π΅Π΅ высоком ΡƒΡ€ΠΎΠ²Π½Π΅.

Помимо слоТСния, здСсь Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ простыС арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивами Python

Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ часто трСбуСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΌΠ΅ΠΆΠ΄Ρƒ массивом ΠΈ простым числом. Π•Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΈ скалярной Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΉ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π² массивС ΡƒΠΊΠ°Π·Π°Π½ΠΎ расстояниС Π² милях, ΠΈ Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ пСрСвСсти Π² ΠΊΠΈΠ»ΠΎΠΌΠ΅Ρ‚Ρ€Ρ‹. Для этого Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ data * 1.6:

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ массива ΠΈ числа

Как ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅, NumPy сам понял, Ρ‡Ρ‚ΠΎ ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ число Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива. Π”Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ называСтся трансляциСй, ΠΈΠ»ΠΈ broadcating. Врансляция Π±Ρ‹Π²Π°Π΅Ρ‚ вСсьма ΠΏΠΎΠ»Π΅Π·Π½Π°.

Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ массива NumPy

Массив NumPy ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° части ΠΈ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΈΠΌ индСксы. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ это происходит со списками Python.

Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ массива NumPy

АгрСгированиС Π² NumPy

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ прСимущСством NumPy являСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² Π½Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ агрСгирования:

АгрСгированиС NumPy

Ѐункциями min(), max() ΠΈ sum() Π΄Π΅Π»ΠΎ Π½Π΅ ограничиваСтся.

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ:

  • mean() позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ срСднСС арифмСтичСскоС;
  • prod() Π²Ρ‹Π΄Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ умноТСния всСх элСмСнтов;
  • std Π½ΡƒΠΆΠ½ΠΎ для срСднСквадратичСского отклонСния.

Π­Ρ‚ΠΎ лишь нСбольшая Ρ‡Π°ΡΡ‚ΡŒ довольно ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎΠ³ΠΎ списка Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ агрСгирования Π² NumPy.

ИспользованиС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… размСрностСй NumPy

ВсС пСрСчислСнныС Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠ°ΡΠ°ΡŽΡ‚ΡΡ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΎΠ΄Π½ΠΎΠΉ размСрности. Π“Π»Π°Π²Π½Ρ‹ΠΌ прСимущСством NumPy являСтся Π΅Π³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π»ΡŽΠ±Ρ‹ΠΌ количСством размСрностСй.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† NumPy Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹Π΅ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ списки ΠΈΠ· списков Python ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ NumPy. Он создаст ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ списки:

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† NumPy

УпомянутыС Ρ€Π°Π½Π΅Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ones(), zeros() ΠΈ random.random() ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ Π΄ΠΎΠ»Π³ΠΎ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ³ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Достаточно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠΌ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ размСрности ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ создаСм.

ΠšΠΎΡ€Ρ‚Π΅ΠΆ для ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ NumPy

АрифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ NumPy

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΡƒΠΌΠ½ΠΎΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² (+ - * /). Π‘Ρ‚ΠΎΠΈΡ‚, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. NumPy Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚:

АрифмСтика ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°

АрифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π² Ρ‚ΠΎΠΌ случаС, Ссли Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΌΠ°Ρ‚Ρ€ΠΈΡ† Ρ€Π°Π²Π½ΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ столбСц ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ряд. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС для выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ NumPy Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° трансляции:

Врансляция ΠΌΠ°Ρ‚Ρ€ΠΈΡ† NumPy

dot() БкалярноС ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ NumPy

Π“Π»Π°Π²Π½ΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ арифмСтичСскими опСрациями здСсь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ скалярноС ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅. Π’ NumPy каТдая ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ dot(). Он примСняСтся для провСдСния скалярных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с рассматриваСмыми ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ:

БкалярноС ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

На ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π²Ρ‹ΡˆΠ΅ ΠΏΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Π½Π° Π΅Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΎ сдСлано с Ρ†Π΅Π»ΡŒΡŽ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ размСрности ΠΎΠ±Π΅ΠΈΡ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ† Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с Ρ‚ΠΎΠΉ стороны, Π³Π΄Π΅ ΠΎΠ½ΠΈ ΡΠΎΠΏΡ€ΠΈΠΊΠ°ΡΠ°ΡŽΡ‚ΡΡ. Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

БкалярноС ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ NumPy

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ индСксации ΠΈ дСлСния Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡ‹, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ манипуляции с ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ:

Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

АгрСгированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ† NumPy

АгрСгированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ† происходит Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ²:

АгрСгированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ† NumPy

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ axis, ΠΌΠΎΠΆΠ½ΠΎ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ всС значСния Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, Π½ΠΎ ΠΈ значСния Π·Π° столбцами ΠΈΠ»ΠΈ рядами.

АгрСгированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ† NumPy

ВранспонированиС ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† Π² numpy

НСрСдки случаи, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ вычислСнии скалярного произвСдСния Π΄Π²ΡƒΡ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ†. Π’ΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ наличия ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… размСрностСй. Π£ массивов NumPy Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ свойство ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ T, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° транспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

ВранспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

НСкоторыС Π±ΠΎΠ»Π΅Π΅ слоТныС ситуации Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ возмоТности ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ размСрностями рассматриваСмой ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹. Π­Ρ‚ΠΎ Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ, Π³Π΄Π΅ нСкая модСль ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ Π²Ρ‹Π²ΠΎΠ΄Π°, которая являСтся ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΎΡ‚ Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Ρ‚Π°ΠΊΠΈΡ… ситуациях пригодится ΠΌΠ΅Ρ‚ΠΎΠ΄ reshape() ΠΈΠ· NumPy. Π—Π΄Π΅ΡΡŒ ΠΎΡ‚ вас трСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ размСрности для ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹. Для размСрности Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ -1, ΠΈ NumPy Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Π΅Π΅ Π²Π΅Ρ€Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΎΠΏΠΈΡ€Π°ΡΡΡŒ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ рассматриваСмой ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹:

ВранспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

Π•Ρ‰Π΅ большС размСрностСй NumPy

NumPy ΠΌΠΎΠΆΠ΅Ρ‚ произвСсти всС Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для любого количСства размСрностСй. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…, располоТСнных Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎ, называСтся ndarray, ΠΈΠ»ΠΈ n-ΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом.

Π˜Π·ΠΌΠ΅Ρ€Π΅Π½ΠΈΡ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв для указания Π½ΠΎΠ²ΠΎΠΉ размСрности трСбуСтся просто Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π·Π°ΠΏΡΡ‚ΡƒΡŽ ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ NumPy:

НовоС ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

На Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ: Π‘Ρ‚ΠΎΠΈΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ 3-ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива NumPy Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, прСдставлСнный Π² Π²ΠΈΠ΄Π΅ тСкста, выглядит ΠΈΠ½Π°Ρ‡Π΅, Π½Π΅ΠΆΠ΅Π»ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ Π²Ρ‹Π²ΠΎΠ΄Π° n-ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива NumPy ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ β€” послСдняя ось зацикливаСтся быстрСС всСго, Π° пСрвая ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ всСго. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π²ΠΎΠ΄ np.ones((4,3,2)) Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΈΠ΄:

array([[[1., 1.], [1., 1.], [1., 1.]], [[1., 1.], [1., 1.], [1., 1.]], [[1., 1.], [1., 1.], [1., 1.]], [[1., 1.], [1., 1.], [1., 1.]]])

array([[[1., 1.],

Β Β Β Β Β Β Β Β [1., 1.],

Β Β Β Β Β Β Β Β [1., 1.]],

Β 

Β Β Β Β Β Β  [[1., 1.],

Β Β Β Β Β Β Β Β [1., 1.],

Β Β Β Β Β Β Β Β [1., 1.]],

Β 

Β Β Β Β Β Β  [[1., 1.],

Β Β Β Β Β Β Β Β [1., 1.],

Β Β Β Β Β Β Β Β [1., 1.]],

Β 

Β Β Β Β Β Β  [[1., 1.],

Β Β Β Β Β Β Β Β [1., 1.],

Β Β Β Β Β Β Β Β [1., 1.]]])

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с NumPy

ΠŸΠΎΠ΄Ρ‹Ρ‚ΠΎΠΆΠΈΠΌ всС Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅. Π’ΠΎΡ‚ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… инструмСнтов NumPy, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ процСсс написания ΠΊΠΎΠ΄Π°.

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ NumPy

ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ внСдрСния матСматичСских Ρ„ΠΎΡ€ΠΌΡƒΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ, являСтся Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ использования NumPy. ИмСнно поэтому NumPy ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ большой ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒΡŽ срСди прСдставитСлСй Π½Π°ΡƒΠΊΠΈ. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° рассмотрим Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ срСднСквадратичной ошибки, которая являСтся Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ для ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ машинного обучСния, Ρ‡Ρ‚ΠΎ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ рСгрСссии:

БрСдняя квадратичная ошибка

Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ Π² NumPy довольно Π»Π΅Π³ΠΊΠΎ:

БрСдняя квадратичная ошибка Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°

Π“Π»Π°Π²Π½ΠΎΠ΅ достоинство NumPy Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Π½Π΅ Π·Π°Π±ΠΎΡ‚ΠΈΡ‚, Ссли predictions ΠΈ labels содСрТат ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ тысячи Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ ΠΎΠ±Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°). Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΠ² Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС ΠΊΠΎΠ΄Π°:

БрСдняя квадратичная ошибка Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°

Π£ ΠΎΠ±ΠΎΠΈΡ… Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² predictions ΠΈ labels ΠΏΠΎ Ρ‚Ρ€ΠΈ значСния. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС n Ρ€Π°Π²Π½ΠΎ Ρ‚Ρ€Π΅ΠΌ. ПослС выполнСния ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ вычитания ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

БрСдняя квадратичная ошибка Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ возвСсти значСния Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚:

БрСдняя квадратичная ошибка Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ вычисляСм эти значСния:

БрСдняя квадратичная ошибка Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ошибки Π½Π΅ΠΊΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·Π° ΠΈ score Π·Π° качСство ΠΌΠΎΠ΄Π΅Π»ΠΈ.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… NumPy

Π—Π°Π΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ΡΡŒ ΠΎ всСх Ρ‚Π΅Ρ… Ρ‚ΠΈΠΏΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Π°ΠΌ понадобится ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, создавая Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ (элСктронныС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, изобраТСния, Π°ΡƒΠ΄ΠΈΠΎ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅). ΠžΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСны ΠΊΠ°ΠΊ n-ΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы:

Π’Π°Π±Π»ΠΈΡ†Ρ‹ NumPy β€” ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования Ρ‚Π°Π±Π»ΠΈΡ†

Π’Π°Π±Π»ΠΈΡ†Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ являСтся Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ΠΉ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ лист Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π² Python Ρ‡Π°Ρ‰Π΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ pandas.DataFrame, Ρ‡Ρ‚ΠΎ задСйствуСт NumPy ΠΈ строит ΠΏΠΎΠ²Π΅Ρ€Ρ… Π½Π΅Π³ΠΎ.

Π’Π°Π±Π»ΠΈΡ†Ρ‹ Python

Аудио ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ряды Π² NumPy

По сути Π°ΡƒΠ΄ΠΈΠΎ Ρ„Π°ΠΉΠ»Β  β€” это ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив сСмплов. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ сСмпл прСдставляСт собой число, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся ΠΊΡ€ΠΎΡˆΠ΅Ρ‡Π½Ρ‹ΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² Π°ΡƒΠ΄ΠΈΠΎ сигнала. Аудио CD-качСства ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ 44 100 сСмплов Π² сСкунду, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся Ρ†Π΅Π»Ρ‹ΠΌ числом Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ -32767 ΠΈ 32768. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ дСсятисСкундный WAVE-Ρ„Π°ΠΉΠ» CD-качСства ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² массив NumPy Π΄Π»ΠΈΠ½ΠΎΠΉ Π² 10 * 44 100 = 441 000 сСмплов.

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ сСкунду Π°ΡƒΠ΄ΠΈΠΎ? ΠŸΡ€ΠΎΡΡ‚ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» Π² массив NumPy ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ audio, послС Ρ‡Π΅Π³ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ audio[: 44100].

Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π°ΡƒΠ΄ΠΈΠΎ Ρ„Π°ΠΉΠ»Π° выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Аудио NumPy

Π’ΠΎ ΠΆΠ΅ самоС касаСтся Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… рядов, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, измСнСния стоимости Π°ΠΊΡ†ΠΈΠΉ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² NumPy

Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ являСтся ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ΠΉ пиксСлСй ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ (высота Ρ… ΡˆΠΈΡ€ΠΈΠ½Π°).

Если ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»ΠΎΠ΅, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ прСдставлСнноС Π² ΠΏΠΎΠ»ΡƒΡ‚ΠΎΠ½Π°Ρ…, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ пиксСль ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСн ΠΊΠ°ΠΊ СдинствСнноС число. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ 0 (Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ) ΠΈ 255 (Π±Π΅Π»Ρ‹ΠΉ). Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±Ρ€Π΅Π·Π°Ρ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 10 Ρ… 10 пиксСлСй Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ Π»Π΅Π²ΠΎΠΌ ΡƒΠ³Π»Ρƒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ? ΠŸΡ€ΠΎΡΡ‚ΠΎ попроситС Π² NumPy image[:10, :10].

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ выглядит Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ изобраТСния:

Π§Π΅Ρ€Π½ΠΎ-Π±Π΅Π»ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ NumPy

Если ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π½ΠΎΠ΅, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ пиксСль прСдставлСн трСмя числами. Π—Π΄Π΅ΡΡŒ Π·Π° основу бСрСтся цвСтовая модСль RGB β€” красный (R), Π·Π΅Π»Π΅Π½Ρ‹ΠΉ (G) ΠΈ синий (B).

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π½Π°ΠΌ понадобится Ρ‚Ρ€Π΅Ρ‚ΡŒΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ каТдая ΠΊΠ»Π΅Ρ‚ΠΊΠ° Π²ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ число. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, цвСтная ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ прСдставлСна массивом ndarray с размСрностями: (высота Ρ… ΡˆΠΈΡ€ΠΈΠ½Π° Ρ… 3).

ЦвСтная ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° NumPy

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° тСкста Π² NumPy Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…

Когда Π΄Π΅Π»ΠΎ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ тСкста, ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ нСсколько мСняСтся. Π¦ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ΅ прСдставлСниС тСкста ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ созданиС Π½Π΅ΠΊΠΎΠ³ΠΎ python словаря, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ инвСнтаря всСх ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… слов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π»ΠΈΡΡŒ модСлью, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΒ  (embedding step). ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ Ρ†ΠΈΡ‚Π°Ρ‚Ρƒ ΠΈΠ· стихотворСния арабского поэта Антара ΠΈΠ±Π½ Π¨Π°Π΄Π΄Π°Π΄Π°, ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Π½Π° английский язык:

β€œHave the bards who preceded me left any theme unsung?” 

ΠŸΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ Π΄Π°Π½Π½ΠΎΠ³ΠΎ прСдлоТСния Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ модСль Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство тСкста. Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ нСбольшой Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹ΠΉ, послС Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ для создания словаря ΠΈΠ· 71 290 слов.

NumPy модСль словаря

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π±ΠΈΡ‚ΠΎ Π½Π° массив Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ², Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ словами ΠΈΠ»ΠΈ частями слов Π² зависимости ΠΎΡ‚ установлСнных ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»:

NumPy Ρ‚ΠΎΠΊΠ΅Π½Ρ‹

Π—Π°Ρ‚Π΅ΠΌ Π² Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ словаря вмСсто ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ слова ΠΌΡ‹ ставим Π΅Π³ΠΎ id:

NumPy Π·Π°ΠΌΠ΅Π½Π° тСкста id

Однако Π΄Π°Π½Π½Ρ‹Π΅ id всС Π΅Ρ‰Π΅ Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ достаточным количСством ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ слов Π² модСль Ρ‚ΠΎΠΊΠ΅Π½Ρ‹/слова Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΈΡ… Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΌΠΈ прСдставлСниями. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ 50-ΠΌΠ΅Ρ€Π½ΠΎΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ΅ прСдставлСниС Word2vec.

NumPy Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ прСдставлСния

Π—Π΄Π΅ΡΡŒ ясно Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρƒ массива NumPy Π΅ΡΡ‚ΡŒ нСсколько размСрностСй [embedding_dimension x sequence_length]. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ всС выглядит нСсколько ΠΈΠ½Π°Ρ‡Π΅, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΄Π°Π½Π½ΠΎΠ΅ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ прСдставлСниС Π±ΠΎΠ»Π΅Π΅ понятно для Ρ€Π°Π·ΡŠΡΡΠ½Π΅Π½ΠΈΡ ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Для Π»ΡƒΡ‡ΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ обучСния ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ для ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π­Ρ‚ΠΎ происходит ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈ происходит быстрСС, Ссли нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² проходят Ρ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ. Π—Π΄Π΅ΡΡŒ особСнно ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ reshape(). НапримСр, такая модСль, ΠΊΠ°ΠΊ BERT, Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π²Π²ΠΎΠ΄Π° Π² Ρ„ΠΎΡ€ΠΌΠ΅: [batch_size, sequence_length, embedding_size].

NumPy BERT

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ числовой Ρ‚ΠΎΠΌ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ модСль ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ. НСкоторыС строки ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ пустыми, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… модСль ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ»ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·Ρ‹.

(На Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ: Поэма, строчку ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ использовали Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΡƒΠ²Π΅ΠΊΠΎΠ²Π΅Ρ‡ΠΈΠ»Π° своСго Π°Π²Ρ‚ΠΎΡ€Π° Π² Π²Π΅ΠΊΠ°Ρ…. Π‘ΡƒΠ΄ΡƒΡ‡ΠΈ Π½Π΅Π·Π°ΠΊΠΎΠ½Π½ΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹ΠΌ сыном Π³Π»Π°Π²Ρ‹ ΠΏΠ»Π΅ΠΌΠ΅Π½ΠΈ ΠΎΡ‚ Ρ€Π°Π±Ρ‹Π½ΠΈ, Антара ΠΈΠ±Π½ Π¨Π°Π΄Π΄Π°Π½ мастСрски Π²Π»Π°Π΄Π΅Π» языком поэзии. Π’ΠΎΠΊΡ€ΡƒΠ³ историчСской Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ поэта слоТились ΠΌΠΈΡ„Ρ‹ ΠΈ Π»Π΅Π³Π΅Π½Π΄Ρ‹, Π° Π΅Π³ΠΎ стихи стали Ρ‡Π°ΡΡ‚ΡŒΡŽ классичСской арабской Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹).

python-scripts.com

array | NumPy

numpy.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0)

Ѐункция array() создаСт массив NumPy.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:
object — ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ массиву ΠΎΠ±ΡŠΠ΅ΠΊΡ‚
Бписок ΠΈΠ»ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ лбая функция ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΡŽΡ‰ΠΈΠ΅ список ΠΈΠ»ΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ.
dtype — Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… NumPy (Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ)
ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ массива.
copy — False ΠΈΠ»ΠΈ True (Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ)
Если этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ установлСн Π² True (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ), Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ копируСтся. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ происходит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли: ΠΌΠ΅Ρ‚ΠΎΠ΄ __array__ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ копию, Ссли object являСтся Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, Ссли трСуСтся доступ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ массива (dtype, order ΠΈ Ρ‚.Π΄.)
order — ‘K’, ‘A’, ‘C’ ΠΈΠ»ΠΈ ‘F’ (Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ)
Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ опрСдСляСт Π² ΠΊΠ°ΠΊΠΎΠΌ порядкС массивы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² памяти: строчном C-стилС ΠΈΠ»ΠΈ столбчатом стилС Fortran. Если object Π½Π΅ являСтся массивом NumPy, Ρ‚ΠΎ созданный массив Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² памяти Π² строковом Π‘ порядкС, Ссли ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ„Π»Π°Π³ ‘F’, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² столбчатом порядкС ‘Fortran’. Если object — это массив NumPy, Ρ‚ΠΎ Ρ„Π»Π°Π³ ‘K’ Π»ΠΈΠ±ΠΎ сохраняСт порядок исходного массива Π»ΠΈΠ±ΠΎ устанавливаСт самый Π±Π»ΠΈΠ·ΠΊΠΈΠΉ ΠΏΠΎ структурС; Ρ„Π»Π°Π³ ‘A’ установит ΠΌΠ°ΠΊΠ΅Ρ‚ памяти Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ массива Π² ‘F’ Ссли массив object являСтся смСТным со столбчатым стилСм Fortran, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΌΠ°ΠΊΠ΅Ρ‚ памяти Π±ΡƒΠ΄Π΅Ρ‚ установлСн Π² ‘C’. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ„Π»Π°Π³ установлСн Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ‘K’.
subok- True ΠΈΠ»ΠΈ False (Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ)
Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ установлСн Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True (установлСно ΠΏΠΎ ΡƒΠΌΠΎΠ΄Ρ‡Π°Π½ΠΈΡŽ Π² False), Ρ‚ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ массив Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ подкласса массива object, Ссли False Ρ‚ΠΎ Ρ‚ΠΈΠΏ массива Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса.
ndmin- Ρ†Π΅Π»ΠΎΠ΅ число (Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ)
ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ минимальноС количСство ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ массива, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅, ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΎ ΠΊ Π΅Π³ΠΎ Ρ„ΠΎΡ€ΠΌΠ΅ для удовлСтворСния этого трСбования.
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚:
Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ — массив NumPy
Массив ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠΉ всСм ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ трСбованиям.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ большоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ order, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° порядок хранСния массива Π² памяти. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ситуациях этот порядок ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π² Ρ€Π΅Π΄ΠΊΠΈΡ… случаях ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ошибкам. НапримСр ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π΅Π½ΠΈΠΈ транспонирования массива порядок ‘C’ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ Π½Π° порядок ‘F’:

>>> a = np.array([[1, 2], [1, 2]])
>>> a
array([[1, 2],
       [1, 2]])
>>> 
>>> b = a.T    #  ΠŸΡ€ΠΈΡΠ²ΠΎΠΈΠΌ массиву 'b' Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ 'a' 
>>> b
array([[1, 1],
       [2, 2]])
>>> 
>>> #  Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ порядок хранСния Π² памяти
... 
>>> a.flags
  C_CONTIGUOUS : True
  F_CONTIGUOUS : False
  OWNDATA : True
  WRITEABLE : True
  ALIGNED : True
  UPDATEIFCOPY : False
>>> 
>>> b.flags
  C_CONTIGUOUS : False
  F_CONTIGUOUS : True
  OWNDATA : False
  WRITEABLE : True
  ALIGNED : True
  UPDATEIFCOPY : False

Как Π²ΠΈΠ΄Π½ΠΎ, массив a Π΄ΠΎ транспонирования ΠΈΠΌΠ΅Π» C_CONTIGUOUS : True ΠΈ F_CONTIGUOUS : False Ρ‚.Π΅. Π±Ρ‹Π» ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ Π² C-стилС, послС транспонирования ΠΎΠ½ смСнился Π½Π° ΡΡ‚ΠΈΠ»ΡŒ Fortran: C_CONTIGUOUS : False ΠΈ F_CONTIGUOUS : True.

Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ order установлСн Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ‘A’ ΠΈ Π² качСствС object ΡƒΠΊΠ°Π·Π°Π½ массив с порядком ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΡ‚ ‘F’ ΠΈΠ»ΠΈ ‘C’, Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ массив Π½Π΅ всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ„Π»Π°Π³ ‘C’. Π’ Ρ€Π΅Π΄ΠΊΠΈΡ… случаях это Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ошибкам.


ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

>>> import numpy as np
>>> 
>>> np.array([1, 2, 3, 4, 5, 6, 7])
array([1, 2, 3, 4, 5, 6, 7])
>>> 
>>>
>>> #  Если элСмСнты Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Ρ‚ΠΎ всС ΠΎΠ½ΠΈ приводятся ΠΊ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ:
... np.array([1, 1, 2, 2, 3.14, 3.14])
array([ 1.  ,  1.  ,  2.  ,  2.  ,  3.14,  3.14])
>>> 
>>> np.array([1+1j, 1+1j, 2, 2, 3.14, 3.14])
array([ 1.00+1.j,  1.00+1.j,  2.00+0.j,  2.00+0.j,  3.14+0.j,  3.14+0.j])
>>> 
>>>
>>> np.array([[1, 2], [3, 4]])    #  Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив
array([[1, 2],
       [3, 4]])
>>> #  Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива
>>> np.array([[[1, 1], [2, 2]],    
...           [[3, 3], [4, 4]],
...           [[5, 5], [6, 6]]])
array([[[1, 1],
        [2, 2]],

       [[3, 3],
        [4, 4]],

       [[5, 5],
        [6, 6]]])
>>>
>>>
>>> #  Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ массива Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 2 измСрСния:
... a = np.array([1, 3, 5], ndmin = 2)
>>> a
array([[1, 3, 5]])
>>>
>>>
>>> #  Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… массива:
... np.array([[1, 2], [3, 4]], dtype = complex)
array([[ 1.+0.j,  2.+0.j],
       [ 3.+0.j,  4.+0.j]])
>>> 
>>>
>>> #  Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ структурированного массива:
... y = np.array([(1, 1), (2, 4), (3, 9), (4, 16)], dtype = [('x','i2'),('f_x','f4')])
>>> y['x']
array([1, 2, 3, 4], dtype=int16)
>>> y['f_x']
array([  1.,   4.,   9.,  16.], dtype=float32)
>>> 
>>> 
>>> #  БозданиС массивов с использованиСм подклассов:
... np.array(np.mat('1 1 1; 2 2 2; 3 3 3'))
array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3]])
>>> 
>>> np.array(np.mat('1 1 1; 2 2 2; 3 3 3'), subok = True)
matrix([[1, 1, 1],
        [2, 2, 2],
        [3, 3, 3]])

ru.stackoverflow toster python_su_forum cyberforum

pyprog.pro

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

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ массива с использованиСм List: массивы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для хранСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Python Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ встроСнной ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ массивов, Π½ΠΎ вмСсто этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ списки Python.
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ :

ΠΎΠ±Ρ€ = [1, 2, 3, 4, 5]
arr1 = ["гиков", "для", "гиков"]
# Python ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для создания 
# массив
# БозданиС массива с использованиСм списка
    ΠΎΠ±Ρ€ = [1, 2, 3, 4, 5]
    ΠΈΠ±ΠΎ я Π² ΠΎΠ±Ρ€:
        ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (я)

Π’Ρ‹Ρ…ΠΎΠ΄:

1
2
3
4
5


Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ массива с использованиСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ массива:
Ѐункция array (Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, список Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания массива с Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ списком Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π² Π΅Π³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ….
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ :

# Python-ΠΊΠΎΠ΄ для дСмонстрации Ρ€Π°Π±ΠΎΡ‚Ρ‹ 
# array ()
 
# ΠΈΠΌΠΏΠΎΡ€Ρ‚ "массива" для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с массивами
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив
 
# инициализация массива со значСниями массива
# ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ массив со Π·Π½Π°ΠΊΠΎΠΌ Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами
arr = array.array ('i', [1, 2, 3]) 
# ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ исходного массива
print ("Новый созданный массив:", end = "")
для i в диапазонС (0,3):
    print (arr [i], end = "")
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ("/ r")

Π’Ρ‹Ρ…ΠΎΠ΄:

 Новый созданный массив: 1 2 3 1 5


Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ массива с использованиСм numpy ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²:
NumPy ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для создания массивов с Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π΅ΠΌ. Π­Ρ‚ΠΎ сводит ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ выращивания массивов, дорогостоящСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. НапримСр: np.zeros , np.empty ΠΈ Ρ‚. Π”.

numpy.empty (shape, dtype = float, order = ‘C’) : Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ массив Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Ρ‚ΠΈΠΏΠ° со случайными значСниями.

# Python ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅
# numpy.empty ΠΌΠ΅Ρ‚ΠΎΠ΄
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ NumPy ΠΊΠ°ΠΊ ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‰ΠΈΠΊ
b = geek.empty (2, dtype = int)
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ("ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° b: / n", b)
a = geek.empty ([2, 2], dtype = int)
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ("/ nMatrix a: / n", a)
c = geek.empty ([3, 3])
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ("/ nMatrix c: / n", c)

Π’Ρ‹Ρ…ΠΎΠ΄ :

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° Π±: 
 [0 1079574528]
ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° Π°: 
 [[0 0]
 [0 0]]
ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° Π°: 
 [[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]] 

numpy.zeros (shape, dtype = None, order = ‘C’) : Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ массив Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Ρ‚ΠΈΠΏΠ° с нулями.

# ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Python, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ
# numpy.zeros ΠΌΠ΅Ρ‚ΠΎΠ΄
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ NumPy ΠΊΠ°ΠΊ ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‰ΠΈΠΊ
b = geek.zeros (2, dtype = int)
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ("ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° b: / n", b)
a = geek.zeros ([2, 2], dtype = int)
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ("/ nMatrix a: / n", a)
c = geek.zeros ([3, 3])
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ("/ nMatrix c: / n", c)

Π’Ρ‹Ρ…ΠΎΠ΄ :

 ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° Π±: 
 [0 0]
ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° Π°: 
 [[0 0]
 [0 0]]
ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° с: 
 [[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]


ΠŸΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠΉΠΊΠ° массива: ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ reshape ΠΌΠ΅Ρ‚ΠΎΠ΄ , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ массив. Рассмотрим массив с Ρ„ΠΎΡ€ΠΌΠΎΠΉ (a1, a2, a3,…, aN). ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ массив с Ρ„ΠΎΡ€ΠΌΠΎΠΉ (b1, b2, b3,…, bM).
ЕдинствСнноС ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ условиС: a1 x a2 x a3… x aN = b1 x b2 x b3… x bM. (Ρ‚.Π΅. ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива остаСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ.)

numpy.reshape (array, shape, order = ‘C’) : Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ массив Π±Π΅Π· измСнСния Π΄Π°Π½Π½Ρ‹Ρ… массива.

# ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Python, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ
# numpy.reshape () ΠΌΠ΅Ρ‚ΠΎΠ΄
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ NumPy ΠΊΠ°ΠΊ ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‰ΠΈΠΊ
array = geek.arange (8)
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (Β«Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ массив: / nΒ», массив)
# массив Ρ„ΠΎΡ€ΠΌΡ‹ с 2 строками ΠΈ 4 столбцами
array = geek.arange (8) .reshape (2, 4)
print ("/ narray, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ с 2 строками ΠΈ 4 столбцами: / n", массив)
# массив Ρ„ΠΎΡ€ΠΌΡ‹ с 2 строками ΠΈ 4 столбцами
array = geek.arange (8) .reshape (4, 2)
print ("/ narray, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ с 2 рядами ΠΈ
4 столбца: / n ", массив) # Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ массив 3D массив = geek.arange (8) .reshape (2, 2, 2) print (" / nΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ массив ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ Π² 3D: / n ", массив) 

Π’Ρ‹Ρ…ΠΎΠ΄ :

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ массив: 
 [0 1 2 3 4 5 6 7]
массив ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ с 2 рядами ΠΈ 4 столбцами: 
 [[0 1 2 3]
 [4 5 6 7]]
массив ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ с 2 рядами ΠΈ 4 столбцами: 
 [[0 1]
 [2 3]
 [4 5]
 [6 7]]
Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ массив ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ Π² 3D: 
 [[[0 1]
  [2 3]]
 [[4 5]
  [6 7]]]

Для создания ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ чисСл NumPy прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρƒ, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массивы вмСсто списков.
arange Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ распрСдСлСнныС значСния Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π΅. Ρ€Π°Π·ΠΌΠ΅Ρ€ шага ΡƒΠΊΠ°Π·Π°Π½.
linspace Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ распрСдСлСнныС значСния Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π΅. Π½ΠΎΠΌΠ΅Ρ€ Π½Π΅Ρ‚ элСмСнтов Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ.

arange ([start,] stop [, step,] [, dtype]) : Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив с Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ располоТСнными элСмСнтами Π² соотвСтствии с ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠΌ. Упомянутый ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π½Π°ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚, Ρ‚.Π΅. [Π‘Ρ‚Π°Ρ€Ρ‚, Π‘Ρ‚ΠΎΠΏ)

# Python ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅
# numpy.arange ΠΌΠ΅Ρ‚ΠΎΠ΄
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ NumPy ΠΊΠ°ΠΊ ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‰ΠΈΠΊ
print ("A / n", geek.arange (4) .reshape (2, 2), "/ n")
print ("A / n", geek.arange (4, 10), "/ n")
print ("A / n", geek.arange (4, 20, 3), "/ n")

Π’Ρ‹Ρ…ΠΎΠ΄ :


 [[0 1]
 [2 3]]

 [4 5 6 7 8 9]

 [4 7 10 13 16 19]

numpy.linspace (start, stop, num = 50, endpoint = True, retstep = False, dtype = None) : Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ числовыС ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ ΠΏΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρƒ. ΠŸΠΎΡ…ΠΎΠΆΠ΅ Π½Π° располоТСниС, Π½ΠΎ вмСсто шага ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½ΠΎΠΌΠ΅Ρ€ ΠΎΠ±Ρ€Π°Π·Ρ†Π°.

# Python ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅
# numpy.linspace ΠΌΠ΅Ρ‚ΠΎΠ΄
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ NumPy ΠΊΠ°ΠΊ ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‰ΠΈΠΊ
# restep установлСн Π² True
print ("B / n", geek.linspace (2.0, 3.0, num = 5, retstep = True), "/ n")
# Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ sin () Π½Π° большом расстоянии 
x = geek.linspace (0, 2, 10)
print ("A / n", geek.sin (x))

Π’Ρ‹Ρ…ΠΎΠ΄ :

Π’
 (массив ([2., 2.25, 2.5, 2.75, 3.]), 0,25)

 [0. 0,22039774 0,42995636 0,6183698 0,77637192 0,8961922
  0,9719379 0,9998386 0,9786557 0,90929743] 


БвСсти массив: ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ сглаТивания, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ копию массива, свСрнутого Π² ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅. Он ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π·Π°ΠΊΠ°Π·Π°. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ являСтся Β«CΒ» (для основного ряда строк). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ‘F’ для основного порядка столбца.

numpy.ndarray.flatten (order = ‘C’) : Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ копию массива, свСрнутого Π² ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅.

# ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Python, ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ
# numpy.flatten () ΠΌΠ΅Ρ‚ΠΎΠ΄
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ NumPy ΠΊΠ°ΠΊ ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‰ΠΈΠΊ
array = geek.array ([[1, 2], [3, 4]])
# ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ flatten
array.flatten ()
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (массив)
#using толстый ΠΌΠ΅Ρ‚ΠΎΠ΄ 
array.flatten ( 'F')
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (массив)

Π’Ρ‹Ρ…ΠΎΠ΄ :

[1, 2, 3, 4]
[1, 3, 2, 4]
ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ создания массива Π² Numpy
функция ОписаниС
пустой () Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ массив Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Ρ‚ΠΈΠΏΠ° Π±Π΅Π· ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ записСй
empty_like () Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ Π½ΠΎΠ²ΠΎΠ³ΠΎ массива с Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΠΎΠΉ ΠΈ Ρ‚ΠΈΠΏΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ Ρƒ Π΄Π°Π½Π½ΠΎΠ³ΠΎ массива.
Π³Π»Π°Π· () Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив с Π΅Π΄ΠΈΠ½ΠΈΡ†Π°ΠΌΠΈ ΠΏΠΎ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ ΠΈ нулями Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… мСстах.
тоТдСство () Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ массив ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²
ΠΈΠ· Π½ΠΈΡ… () Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ массив Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Ρ‚ΠΈΠΏΠ°, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ
ones_like () Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚Π΅ массив ΠΈΠ· Ρ‚Π΅Ρ… ΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Ρ‚ΠΈΠΏΠ°, Ρ‡Ρ‚ΠΎ ΠΈ Π΄Π°Π½Π½Ρ‹ΠΉ массив
Нули () Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ массив Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Ρ‚ΠΈΠΏΠ°, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ нулями
zeros_like () Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ массив Π½ΡƒΠ»Π΅ΠΉ с Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΠΎΠΉ ΠΈ Ρ‚ΠΈΠΏΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ Π΄Π°Π½Π½Ρ‹ΠΉ массив
full_like () Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ массив с Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΠΎΠΉ ΠΈ Ρ‚ΠΈΠΏΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ Π΄Π°Π½Π½Ρ‹ΠΉ массив.
Массив () Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ массив
asarray () ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π²ΠΎΠ΄ Π² массив
asanyarray () ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠΉΡ‚Π΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² ndarray, Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ подклассы ndarray Ρ‡Π΅Ρ€Π΅Π·
ascontiguousarray () Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹ΠΉ массив Π² памяти (порядок C)
asmatrix () Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ
копия () Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ копию массива Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
frombuffer () Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΡƒΡ„Π΅Ρ€ ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив
ΠΈΠ· Ρ„Π°ΠΉΠ»Π°() ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ массив ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ… Π² тСкстовом ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅
fromfunction () ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ массив, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π½Π°Π΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΠΉ
fromiter () Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΈΠ· ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
fromstring () Новый ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΈΠ· тСкстовых Π΄Π°Π½Π½Ρ‹Ρ… Π² строкС
loadtxt () Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· тСкстового Ρ„Π°ΠΉΠ»Π°
arange () Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ распрСдСлСнныС значСния Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π΅
LINSPACE () Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ распрСдСлСнныС числа Π·Π° ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»
logspace () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ числа, Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ распрСдСлСнныС Π² логарифмичСском ΠΌΠ°ΡΡˆΡ‚Π°Π±Π΅
geomspace () Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ числа, Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ распрСдСлСнныС Π² логарифмичСском ΠΌΠ°ΡΡˆΡ‚Π°Π±Π΅ (гСомСтричСская прогрСссия)
meshgrid () Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΈΠ· ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½Ρ‹Ρ… Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ²
MGRID () ЭкзСмпляр nd_grid, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠ»ΠΎΡ‚Π½ΡƒΡŽ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΡƒΡŽ сСтку
ogrid () ЭкзСмпляр nd_grid, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΡƒΡŽ сСтку
Diag () Π˜Π·Π²Π»Π΅Ρ‡ΡŒ диагональ ΠΈΠ»ΠΈ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ массив
diagflat () Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив со сглаТСнным Π²Ρ…ΠΎΠ΄ΠΎΠΌ Π² Π²ΠΈΠ΄Π΅ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ
Ρ‚Ρ€ΠΈ () Массив с Π΅Π΄ΠΈΠ½ΠΈΡ†Π°ΠΌΠΈ Π½Π° ΠΈ Π½ΠΈΠΆΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ ΠΈ нулями Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… мСстах
TRIL () НиТний Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ массива
triu () Π’Π΅Ρ€Ρ…Π½ΠΈΠΉ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ массива
Vander () ГСнСрация ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π’Π°Π½Π΄Π΅Ρ€ΠΌΠΎΠ½Π΄Π°
ΠΌΠ°Ρ‚() Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ
BMAT () ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ· строки, Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ»ΠΈ массива

adsense2code6

espressocode.top

append | NumPy

numpy.append(a, values, axis=None)

Ѐункция append() добавляСт элСмСнты Π² ΠΊΠΎΠ½Π΅Ρ† массива.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:
a — ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ массиву ΠΎΠ±ΡŠΠ΅ΠΊΡ‚
Π›ΡŽΠ±ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ Π² массив NumPy. Π£ΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ элСмСнты Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΡΡ ΠΊ ΠΊΠΎΠΏΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.
values — ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ массиву ΠΎΠ±ΡŠΠ΅ΠΊΡ‚
Π›ΡŽΠ±ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ Π² массив NumPy, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΊ a. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΡƒΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΈ a ΠΏΠΎ всСм осям, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠΉ, вдоль ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅. Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ axis Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ Ρ‚ΠΎ значСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ любой Ρ„ΠΎΡ€ΠΌΡ‹, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π±ΡƒΠ΄ΡƒΡ‚ сТаты Π΄ΠΎ ΠΎΠ΄Π½ΠΎΠΉ оси ΠΏΠ΅Ρ€Π΅Π΄ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ.
axis — Ρ†Π΅Π»ΠΎΠ΅ число (Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ)
ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ось, Π² ΠΊΠΎΠ½Π΅Ρ† ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ выполняСтся Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ axis = None, Ρ‡Ρ‚ΠΎ соотвСтствуСт сТиманию a ΠΈ values Π΄ΠΎ ΠΎΠ΄Π½ΠΎΠΉ оси ΠΈ созданию Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ массива.
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚:
ndarray — массив NumPy
Копия Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ массива a с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ значСниями values Π² ΠΊΠΎΠ½Π΅Ρ† ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ оси.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

>>> import numpy as np
>>> 
>>> a = np.array([1, 2, 3, 4])
>>> 
>>> np.append(a, 0)
array([1, 2, 3, 4, 0])
>>> 
>>> np.append(a, [5, 6, 7, 8, 9])
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> 
>>>
>>> b = np.array([[2, 3], [5, 7]])
>>> 
>>> np.append(b, [[11, 13]], axis = 0)
array([[ 2,  3],
       [ 5,  7],
       [11, 13]])
>>> 
>>> np.append(b, [[11, 13]], axis = 1)     #  ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС
>>> 
>>> #  Ошибка Π²Ρ‹Π·Π²Π°Π½Π° Ρ‚Π΅ΠΌ Ρ‡Ρ‚ΠΎ Ρ„ΠΎΡ€ΠΌΡ‹ массивов Π΄ΠΎΠ»ΠΆΠ½Ρ‹ 
... #  ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ ΠΏΠΎ всСм осям, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠΉ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π° Π² axis:
... b.shape, np.array([[11, 13]]).shape
((2, 2), (1, 2))
>>>
>>> np.append(b, [[11], [13]], axis = 1)
array([[ 2,  3, 11],
       [ 5,  7, 13]])
>>>
>>> np.append(b, [[11, 17], [13, 19]], axis = 1)
array([[ 2,  3, 11, 17],
       [ 5,  7, 13, 19]])
>>>
>>> np.append(b, [[11, 17, 23], [13, 19, 29]], axis = 1)
array([[ 2,  3, 11, 17, 23],
       [ 5,  7, 13, 19, 29]])

ru.stackoverflow toster python_su_forum cyberforum

pyprog.pro