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

БыстрыС поэлСмСнтныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ | Python: Numpy-массивы

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ для доступа ΠΊ 15+ бСсплатным курсам ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ с Ρ‚Ρ€Π΅Π½Π°ΠΆΠ΅Ρ€ΠΎΠΌ

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΌΠΎΠΆΠ½ΠΎ провСсти мноТСство Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ:

  • Π‘Ρ€Π°Π²Π½ΠΈΡ‚ΡŒ значСния
  • ΠŸΠΎΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ значСния
  • Найти суммы ΠΈ произвСдСния элСмСнтов

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

ΠŸΠΎΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π½Ρ‹Π΅ прСобразования ΠΈ ΡƒΠΊΠ»Π°Π΄Ρ‹Π²Π°Π½ΠΈΠ΅

Numpy ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ синтаксис β€”Β Ρ‚Π°ΠΊ происходит благодаря поэлСмСнтным прСобразованиям. Он позволяСт ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Ρ€Π°Π·Π½ΠΎΠΉ размСрности. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ называСтся ΡƒΠΊΠ»Π°Π΄Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ

.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ Π² эту Ρ‚Π΅ΠΌΡƒ Π³Π»ΡƒΠ±ΠΆΠ΅, познакомимся с распространСнными Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ с арифмСтичСскими опСрациями Π½Π°Π΄ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ выясним, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡƒΠΊΠ»Π°Π΄Ρ‹Π²Π°Π½ΠΈΠ΅ элСмСнтов ΠΎΠ΄Π½ΠΎΠ³ΠΎ массива Π΄Π°Π½Π½Ρ‹Ρ… Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ.

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ со стандартными структурами Π΄Π°Π½Π½Ρ‹Ρ… Π² Python, Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹. Π˜Ρ… количСство ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ зависит ΠΎΡ‚ размСрности. Numpy Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ β€” Π»ΠΎΠ³ΠΈΠΊΠ° ΠΈ синтаксичСскиС конструкции Π² опСрациях Π½Π°Π΄ массивами остаСтся ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ для структур Ρ€Π°Π·Π½ΠΎΠΉ размСрности. Для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ качСства ΠΊΠΎΠ΄Π° Ρ†ΠΈΠΊΠ»Ρ‹ скрыты ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠΆΠ΅. Π’ Π½Π΅ΠΌ ΠΏΠΎΠΊΠ°Π·Π°Π½ ряд ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ числовым Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ поэлСмСнтно примСняСтся ΠΊΠΎ всСму массиву:

import numpy as np
# Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ массив
arr1 = np.array([0, 1, 2, 3, 4, 5, 6, 7])
# Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для измСнСния элСмСнтов массива
change_array_value = 5
print(arr1 + change_array_value)
# => [ 5  6  7  8  9 10 11 12]
print(arr1 - change_array_value)
# => [-5 -4 -3 -2 -1  0  1  2]
print(arr1 * change_array_value)
# => [ 0  5 10 15 20 25 30 35]
print(arr1 / change_array_value)
# => [0.   0.2 0.4 0.6 0.8 1.  1.2 1.4]

Π¦ΠΈΠΊΠ»Ρ‹ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚. Как ΠΌΡ‹ ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ, Π² Numpy это называСтся ΡƒΠΊΠ»Π°Π΄Ρ‹Π²Π°Π½ΠΈΠ΅ΠΌ. Π£ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π½ΠΈΠ΅ элСмСнта Π² массив Π±Ρ‹Π»ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½ΠΎ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΈ числа. Однако ΡƒΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ элСмСнт, Π° любой массив подходящСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π° β€” ΠΏΡ€ΠΈ условии, Ссли структура большСй размСрности. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ прибавлСния элСмСнтов Π²Π΅ΠΊΡ‚ΠΎΡ€Π° построчно ΠΊ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅:

# Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΊ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅
matrix_array = np.array([[5, 8], [8, 9]])
vector_array = np.array([1, 2])
print(matrix_array + vector_array)
# => [[ 6 10]
#  [ 9 11]]

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ двумя массивами, Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ†ΠΈΠΊΠ»Ρ‹. ВсС синтаксичСскиС конструкции ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ:

# Массив для измСнСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ исходного
arr2 = np.array([2, 2, 2, 2, -1, -1, -1, -1])
print(arr1 + arr2)
# => [2 3 4 5 3 4 5 6]
print(arr1 - arr2)
# => [-2 -1  0  1  5  6  7  8]
print(arr1 * arr2)
# => [ 0  2  4  6 -4 -5 -6 -7]
print(arr1 / arr2)
# => [ 0.
0.5 1. 1.5 -4. -5. -6. -7. ]

Для сравнСния посмотрим, ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π°Π΄ стандартными списками. Π‘Π΅Π· Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° zip() Π² этом случаС Π½Π΅ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ:

arr1 = [0, 1, 2, 3, 4, 5, 6, 7]
change_array_value = 5
arr2 = [2, 2, 2, 2, -1, -1, -1, -1]
print([arr1_val + change_array_value for arr1_val in arr1])
# => [5, 6, 7, 8, 9, 10, 11, 12]
print([arr1_val + arr2_val for arr1_val, arr2_val in zip(arr1, arr2)])
# => [2, 3, 4, 5, 3, 4, 5, 6]

Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΠΈ Numpy Ρ†Π΅Π»Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° Π½Π΅ зависит ΠΎΡ‚ размСрности Π΄Π°Π½Π½Ρ‹Ρ…. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ поэлСмСнтныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ:

arr1 = np.array([[5, 8], [8, 9]])
arr2 = np.array([[3, 1], [7, 2]])
change_array_value = 3
print(arr1 * arr2)
# => [[15  8]
#  [56 18]]
print(arr1 / change_array_value)
# => [[1.66666667 2.66666667]
#  [2.66666667 3.        ]]

Π’ΠΎ всСх ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Π²Ρ‹ΡˆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивами Numpy ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ. Π Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ влияла Π½Π° синтаксис β€” ΠΌΡ‹ использовали ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ матСматичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, мСняя Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹: числа, Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

Для сравнСния ΠΈΠ·ΡƒΡ‡ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдставлСны стандартными списками. Π—Π΄Π΅ΡΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»Ρ‹:

# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ для Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ стандартными списками
arr1 = [[5, 8], [8, 9]]
arr2 = [[3, 1], [7, 2]]
change_array_value = 3
for i in range(len(arr1)):
    for j in range(len(arr1[0])):
        arr1[i][j] *= arr2[i][j]
print(arr1)
# => [[15, 8],
# [56, 18]]
for i in range(len(arr2)):
    for j in range(len(arr2[0])):
        arr2[i][j] += change_array_value
print(arr2)
# => [[6, 4],
# [10, 5]]

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со стандартными списками Ρ‡Π΅ΠΌ большС Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ, Ρ‚Π΅ΠΌ большС строк ΠΊΠΎΠ΄Π°. К этому ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ стоит ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, вСдь Π΄Π»ΠΈΠ½Π° ΠΊΠΎΠ΄Π° Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ слоТнСС Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ возникновСнию ошибок.

Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅

Π’ качСствС практичСского ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ€Π΅ΡˆΠΈΠΌ Π·Π°Π΄Π°Ρ‡Ρƒ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ сталкиваСтся Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊ Π΄Π°Π½Π½Ρ‹Ρ… Π² своСй Ρ€Π°Π±ΠΎΡ‚Π΅. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ историчСскиС Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ°ΠΌ Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠΎΠ² Π² сСти ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠ² Π·Π° нСдСлю. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ отклонСния ΠΎΡ‚ срСдних ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ. Π‘Ρ€Π΅Π΄Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ вычислСны ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Π² зависимости ΠΎΡ‚ срСза Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ:

  • Π’ΠΎ всСй сСти ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠ²
  • Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ
  • Π‘ распрСдСлСниСм ΠΏΠΎ дням Π½Π΅Π΄Π΅Π»ΠΈ

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… сСрвиса Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ Π² Π²ΠΈΠ΄Π΅ списка списков Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π³Π΄Π΅ внСшний список ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ списки ΠΏΡ€ΠΎΠ΄Π°ΠΆ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ дню Π½Π΅Π΄Π΅Π»ΠΈ для Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠ²:

# ΠŸΡ€ΠΎΠ΄Π°ΠΆΠΈ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°
orders =  [
    [7, 1, 7, 8],
    [4, 2, 4, 5],
    [3, 5, 2, 3],
    [8, 12, 8, 7],
    [15, 11, 13, 9],
    [21, 18, 17, 21],
    [25, 16, 25, 17]
]
orders = np.array(orders)

ПослС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π²ΠΈΠ΄Π΅ массива ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π°Π½Π°Π»ΠΈΠ·Ρƒ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠΉ ΠΎΡ‚ срСднСго ΠΏΠΎ всСй сСти:

# Π‘Ρ€Π΅Π΄Π½Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ всСм ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°ΠΌ ΠΏΠΎ всСм дням
mean_orders_value = orders.mean()
print(mean_orders_value)
# => 10.
5 print(orders - mean_orders_value) # => [[-3.5 -9.5 -3.5 -2.5] # [-6.5 -8.5 -6.5 -5.5] # [-7.5 -5.5 -8.5 -7.5] # [-2.5 1.5 -2.5 -3.5] # [ 4.5 0.5 2.5 -1.5] # [10.5 7.5 6.5 10.5] # [14.5 5.5 14.5 6.5]]

Π‘Ρ€Π΅Π΄Π½ΠΈΠΉ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ для всСй сСти Π½Π΅ всСгда ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π°Π½Π°Π»ΠΈΠ·Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΉ объСм ΠΏΡ€ΠΎΠ΄Π°ΠΆ. Π§Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ с ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ°ΠΌΠΈ, Π½Π°ΠΉΠ΄Π΅ΠΌ срСднСС ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΌΠ°Π³Π°Π·ΠΈΠ½Ρƒ. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ столбцам ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΏΡ€ΠΎΠ΄Π°ΠΆ. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ срСдниС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ mean() с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ axis = 0:

# Π‘Ρ€Π΅Π΄Π½Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°ΠΌ
mean_by_shop = orders.mean(axis=0)
print(mean_by_shop)
# => [11.85714286  9.28571429 10.85714286 10.]
print(orders - mean_by_shop)
# =>[[-4.85714286 -8.28571429 -3.85714286 -2.]
#  [-7.85714286 -7.28571429 -6.85714286 -5.]
#  [-8.85714286 -4.28571429 -8.85714286 -7.]
#  [-3.85714286  2.71428571 -2.85714286 -3.]
#  [ 3.14285714  1.71428571  2.14285714 -1.]
#  [ 9.14285714  8.
71428571 6.14285714 11.] # [13.14285714 6.71428571 14.14285714 7.]]

Аналитику Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ информация ΠΎ Π΄Π½Π΅Π²Π½Ρ‹Ρ… отклонСниях. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ просадку ΠΏΡ€ΠΎΠ΄Π°ΠΆ ΠΏΠΎ Π²ΠΈΠ½Π΅ логистов ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ². Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΉΡ‚ΠΈ срСдниС ΠΏΠΎ дням. К ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ ΠΏΡ€ΠΎΠ΄Π°ΠΆ Π½Π°Π΄ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄

mean() с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ axis = 1:

# Π‘Ρ€Π΅Π΄Π½Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ дням
mean_by_day = orders.mean(axis=1)
print(mean_by_day)
# => [ 5.75  3.75  3.25  8.75 12.   19.25 20.75]
# ΠŸΠ΅Ρ€Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° для укладывания ΠΏΠΎ столбцам
mean_by_day = mean_by_day.reshape((7,1))
print(mean_by_day)
# => [[ 5.75]
#  [ 3.75]
#  [ 3.25]
#  [ 8.75]
#  [12.  ]
#  [19.25]
#  [20.75]]
print(orders - mean_by_day)
# => [[ 1.25 -4.75  1.25  2.25]
#  [ 0.25 -1.75  0.25  1.25]
#  [-0.25  1.75 -1.25 -0.25]
#  [-0.75  3.25 -0.75 -1.75]
#  [ 3.   -1.    1.   -3.  ]
#  [ 1.75 -1.25 -2.25  1.75]
#  [ 4.25 -4.75  4.25 -3.75]]

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ reshape() β€” ΠΎΠ½ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ строку срСдних Π² столбСц. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π΅ΠΊΡ‚ΠΎΡ€ Π±Ρ‹Π» ΡƒΠ»ΠΎΠΆΠ΅Π½ Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ столбцам.

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Numpy ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ вычислСния с использованиСм языка Python. Для этого ΠΎΠ½Π° примСняСт ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ интСрфСйс Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами. ВсС арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ массивами производятся Π±Π΅Π· Ρ†ΠΈΠΊΠ»ΠΎΠ² β€” с использованиСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ самих символов ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Π²Ρ‹Ρ€Π΅Π·Π°Π½ΠΈΠ΅ | Python: Numpy-массивы

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ для доступа ΠΊ 15+ бСсплатным курсам ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ с Ρ‚Ρ€Π΅Π½Π°ΠΆΠ΅Ρ€ΠΎΠΌ

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π°ΠΉΡ‚ΠΈ элСмСнты ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния поиска ошибок Π² Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ поиска ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  • ΠžΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния Π² Π³Ρ€Π°Ρ„Π΅ Β«ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ΄Π°ΠΆΒ»
  • Π‘ΡƒΠΊΠ²Ρ‹ вмСсто Ρ†ΠΈΡ„Ρ€ Π² Π³Ρ€Π°Ρ„Π΅ «НомСр Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°Β»
  • НСрСалистично большиС числа Π² Π³Ρ€Π°Ρ„Π΅ Β«Π‘ΡƒΠΌΠΌΠ° сдСлки»

Π’ стандартном Python ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ значСния ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ filter(). Π’ Numpy Π΅ΡΡ‚ΡŒ схоТая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ рассмотрим Π² этом ΡƒΡ€ΠΎΠΊΠ΅. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ элСмСнты ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с массивами numpy.ndarray.

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π±ΡƒΠ»Π΅Π²Ρƒ маску

Для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массива numpy.ndarray ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π±ΡƒΠ»Π΅Π²Ρ‹ маски β€” массивы Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ True ΠΈ False. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· Π±ΡƒΠ»Π΅Π²Ρƒ маску ΠΈ распрСдСляСтся Π² зависимости ΠΎΡ‚ значСния маски:

  • Если Π½Π° Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² маскС стоит Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True, элСмСнт добавляСтся Π² ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ массив
  • Если Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ стоит Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ False, Ρ‚ΠΎ элСмСнт Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ массив

БущСствуСт Ρ‚Ρ€ΠΈ способа Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±ΡƒΠ»Π΅Π²ΠΎΠΉ маской:

  • Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ массив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ True ΠΈ False Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ сравнСния Π½Π°Π΄ элСмСнтами исходного массива
  • ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ логичСскоС ΠΎΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΠ΅ ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ маскС β€” ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ True Π½Π° False ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚

Π’Π°ΠΊ всС Ρ‚Ρ€ΠΈ способа выглядят Π² ΠΊΠΎΠ΄Π΅:

import numpy as np
# Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ массив
base_array = np. array([0, 1, 2, 3, 4, 5, 6, 7,])
print(base_array)
# => [0 1 2 3 4 5 6 7]
# Π ΡƒΡ‡Π½ΠΎΠ΅ созданиС маски
handmade_mask = [True, True, True, False, False, False, False, False,]
print(handmade_mask)
# => [True, True, True, False, False, False, False, False]
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ маски ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ
compare_mask = base_array < 3
print(compare_mask)
# => [ True  True  True False False False False False]
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ маски ΠΏΠΎ логичСскому ΠΎΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΡŽ условия
opposite_compare_mask = ~(base_array >= 3)
print(opposite_compare_mask)
# => [ True  True  True False False False False False]

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ способ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ встрСчаСтся Ρ€Π΅Π΄ΠΊΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π° Ρ€ΡƒΡ‡Π½ΠΎΠ΅ созданиС маски ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ слишком ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, особСнно ΠΏΡ€ΠΈ большом Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ массива:

Как ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ маску

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π±ΡƒΠ»Π΅Π²Ρƒ маску ΠΊ исходному массиву, достаточно ΠΏΠΎΠ΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π΅ Π² качСствС индСкса:

print(base_array[handmade_mask])
# => [0 1 2]
print(base_array[compare_mask])
# => [0 1 2]
print(base_array[opposite_compare_mask])
# => [0 1 2]

Как ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅, Π² Python Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° функция filter(), которая примСняСтся для ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ списка ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ:

# Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с использованиСм filter
filtered_list = list(
    filter(
        lambda x: x < 3,
        [0, 1, 2, 3, 4, 5, 6, 7,]
    )
)
print(filtered_list)
# => [0 1 2]

Для ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ элСмСнтов массива numpy. ndarray ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΎΠΉ способ β€” ΠΌΠ΅Ρ‚ΠΎΠ΄ numpy.fromiter():

# Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ созданиС Π½ΠΎΠ²ΠΎΠ³ΠΎ массива с использованиСм fromiter, Ρ‚ΠΈΠΏ массива задаСтся Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ dtype
filtered_array = np.fromiter(
    (base_array_element for base_array_element in base_array if base_array_element < 3),
    dtype = base_array.dtype
)
print(filtered_array)
# => [0 1 2]

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ часто трСбуСтся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ±ΠΈΡ€Π°Ρ‚ΡŒ значСния ΠΈΠ· исходного массива, Π½ΠΎ ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ…. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ numpy.where():

# ЗамСняСм ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ элСмСнты Π½Π° 0
print(np.where(base_array < 3, base_array, 0))
# => [0 1 2 0 0 0 0 0]

Если для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ составноС условиС, Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ маску ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΌ:

# ЗамСняСм ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ элСмСнты Π½Π° 0 с использованиСм маски
compare_masks = (base_array > 5) | (base_array < 3)
print(np.where(compare_masks, base_array, 0))
# => [0 1 2 0 0 0 6 7]

Π’ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… рСгулярно Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ значСния. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ·-Π·Π° чСловСчСского Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°, сбоя Π² Ρ€Π°Π±ΠΎΡ‚Π΅ сСрвисов ΠΈΠ»ΠΈ ошибки ΠΏΡ€ΠΈ записи Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…. Для Ρ‚Π°ΠΊΠΈΡ… случаСв Π² Numpy сущСствуСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… numpy.nan (not a number):

# Массив с ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΌΠΈ значСниями
raw_array = np.array([0, 1, None, 3, 4, None, 6, 7,], dtype=np.float64)
print(raw_array)
# => [ 0.  1. nan  3.  4. nan  6.  7.]

Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ пропуски, Ρ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ Π½ΠΈΡ… ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Рассмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Π‘Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ пропуски:

# Маска для поиска пропусков
nan_mask = np.isnan(raw_array)
print(nan_mask)
# => [False False  True False False  True False False]

Π—Π°Ρ‚Π΅ΠΌ чистим Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ пропусков:

# Маска для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
not_nan_mask = ~nan_mask
print(raw_array[not_nan_mask])
# => [0. 1. 3. 4. 6. 7.]

Π’Π΅ΠΏΠ΅Ρ€ΡŒ замСняСм пропуски Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

# ЗамСняСм пропуски Π½Π° 0
print(np. where(nan_mask, 0, raw_array))
# => [0. 1. 0. 3. 4. 0. 6. 7.]

Как ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ маску с Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами

Π’Ρ‹ΡˆΠ΅ ΠΌΡ‹ рассмотрСли Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива. Π’Π΅ ΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ ΠΈ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°Π΄Π°Ρ‡ΠΈ β€” ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠΌ сырыС Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΄Π°ΠΆ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠΎΠ² ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагам:

  • Π‘Π½Π°Ρ‡Π°Π»Π° ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠΌ выбросы Π΄Π²ΡƒΡ… Ρ‚ΠΈΠΏΠΎΠ² β€” значСния Π²Ρ‹ΡˆΠ΅ 200 ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния. Число 200 Π²Ρ‹Π±Ρ€Π°Π½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠΎΠ² хранится Π½Π° складС. ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΌΠ°Π³Π°Π·ΠΈΠ½Π° Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² дСнь Π½Π΅ Π±Ρ‹Π²Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ 200 ΠΏΡ€ΠΎΠ΄Π°ΠΆ
  • Π—Π°Ρ‚Π΅ΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΠΌ выбросы ΠΈ пропуски Π½Π° срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΄Π°ΠΆ

ΠœΡ‹ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌ эти ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ сырыС Π΄Π°Π½Π½Ρ‹Π΅ ΠΊ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠΉ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² статистики ΠΈ машинного обучСния:

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ список списков ΠΏΡ€ΠΎΠ΄Π°ΠΆ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠ²
orders_values =  [
    [7, 1, -7, None],
    [1000, 2, 4, None],
    [3, None, 503, 3],
    [8, 12, 8, 7],
    [15, 11, None, 9],
    [None, 18, 17, -21],
    [252, 16, 25, 17]
]
# ΠšΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π² Numpy-массив
orders = np. array(orders_values, dtype=np.float64)
print(orders)
# => [[   7.    1.   -7.   nan]
#  [1000.    2.    4.   nan]
#  [   3.   nan  503.    3.]
#  [   8.   12.    8.    7.]
#  [  15.   11.   nan    9.]
#  [  nan   18.   17.  -21.]
#  [ 252.   16.   25.   17.]]

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ значСния, Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ маски:

# Маска для ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
negative_values = orders < 0
print(orders[negative_values])
# => [ -7. -21.]
# Маска для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
big_values = orders > 200
print(orders[big_values])
# => [1000.  503.  252.]
# Маска для ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ подсчСта ΠΈΡ… количСства
nan_values = np.isnan(orders)
print(sum(sum(nan_values)))
# => 5

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ срСдниС значСния, Π½ΡƒΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ стандартныС значСния ΠΏΡ€ΠΎΠ΄Π°ΠΆ. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ маской, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰Π΅ΠΉ логичСскиС отрицания сформированных масок:

# Маска стандартных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
normal_mask = ~negative_values & ~big_values & ~nan_values
# Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ значСния Π·Π°ΠΊΠ°Π·ΠΎΠ²
normal_values = orders[normal_mask]
# Π‘Ρ€Π΅Π΄Π½Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для стандартных Π·Π°ΠΊΠ°Π·ΠΎΠ²
normal_mean = normal_values. mean()
normal_mean = int(normal_mean)
print(normal_mean)
# => 10

Π”Π°Π»Π΅Π΅ остаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ нСстандартныС значСния Π½Π° Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ срСднСго:

# Массив, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ нСстандартныС значСния Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ Π½Π° срСднСС
prepared_orders = np.where(normal_mask, orders, normal_mean)
print(prepared_orders)
# => [[ 7.  1. 10. 10.]
#  [10.  2.  4. 10.]
#  [ 3. 10. 10.  3.]
#  [ 8. 12.  8.  7.]
#  [15. 11. 10.  9.]
#  [10. 18. 17. 10.]
#  [10. 16. 25. 17.]]

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

Начало Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами Python

Главная/Π‘Π»ΠΎΠ³/Π£Ρ‡Π΅Π±Π½ΠΈΠΊΠΈ ΠΈ руководства/Python Π·Π° 5 ΠΌΠΈΠ½ΡƒΡ‚: Начало Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами Python

17 сСнтября 2021 Π³. β€” Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ 5 ΠΌΠΈΠ½. языки. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… областях, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Π½Π°ΡƒΠΊΠ° ΠΎ Π΄Π°Π½Π½Ρ‹Ρ…, машинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. ΠœΠ°ΡΡΠΈΠ²Ρ‹ β€” ваТная структура Π΄Π°Π½Π½Ρ‹Ρ… Π² Python. ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π½Π°ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ дСйствия Π½Π°Π΄ этими значСниями. Π’ этом руководствС ΠΏΠΎ Python ΠΌΡ‹ рассмотрим массивы Python, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивами ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

ΠœΡ‹ рассмотрим :

  • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ массивы Python?
  • Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ массив Python
  • ΠžΠ±Ρ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивами
  • 2D-массивы Python
  • ПодвСдСниС ΠΈΡ‚ΠΎΠ³ΠΎΠ² ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги


Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ массивы Python?

Массив Python β€” это ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ нСсколько элСмСнтов ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π­Ρ‚ΠΎ позволяСт Π½Π°ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ нСсколько элСмСнтов ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° вмСстС. ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ распространСны. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ структур Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ массивы для выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², Π° массивы ΠΎΡ‡Π΅Π½ΡŒ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Ρ‚Π°ΠΊΠΈΡ… областях, ΠΊΠ°ΠΊ Π½Π°ΡƒΠΊΠ° ΠΎ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ машинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массивы, ΠΊΠΎΠ³Π΄Π° Ρ…ΠΎΡ‚ΠΈΠΌ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Они ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с большими объСмами Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ массивы ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ большоС количСство элСмСнтов.

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ массива β€” это элСмСнт, хранящийся Π² массивС. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, элСмСнты Β«Π‘ΠΏΠΎΡ‚Β», «Макс» ΠΈ «Бэм» ΠΈΠ· нашСго массива собак ΡΠ²Π»ΡΡŽΡ‚ΡΡ элСмСнтами. ИндСкс относится ΠΊ ΠΌΠ΅ΡΡ‚ΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ числового индСкса ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ индСкс для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ доступа ΠΊ элСмСнтам.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ списки Python?

Π₯отя ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡ… ΠΏΡƒΡ‚Π°ΡŽΡ‚, список Python отличаСтся ΠΎΡ‚ массива Python. Бписок β€” это Π½Π°Π±ΠΎΡ€ элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π΄Π°Π½Π½Ρ‹Π΅ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт списка ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ строкой, Π²Ρ‚ΠΎΡ€ΠΎΠΉ элСмСнт ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΌ числом, Π° Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ списком строк ΠΈ Ρ‚. Π΄. Бписки упорядочСны, измСняСмы, ΠΈ ΠΈΡ… элСмСнты Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ. .

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ наши списки Python Π² массивы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ NumPy Python, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ массива NumPy:

  • numpy.массив ()
  • numpy.asarray()

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ массив Python

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ массив с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ модуля массива ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ import array . Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Python:

 

собаки = ["Π‘ΠΏΠΎΡ‚", "Макс", "Бэм", "Π§Π°Ρ€Π»ΠΈ", "ΠšΡƒΠΏΠ΅Ρ€", "Π“Π΅Ρ€Ρ†ΠΎΠ³", "МСдвСдь", "Π‘Π°Π΄Π΄ΠΈ", "Майло". ", "ΠœΠ΅Ρ€Ρ„ΠΈ"]

print(dogs)

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ с массивами Python.

ΠžΠ±Ρ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с массивами

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнтов

БущСствуСт нСсколько способов добавлСния элСмСнтов Π² массив. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнты Π² ΠΊΠΎΠ½Π΅Ρ† массива, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ append() :

 

собаки = ["Π‘ΠΏΠΎΡ‚", "Макс", "Бэм", "Π§Π°Ρ€Π»ΠΈ", "ΠšΡƒΠΏΠ΅Ρ€", "Π“Π΅Ρ€Ρ†ΠΎΠ³", " МСдвСдь", "Π‘Π°Π΄Π΄ΠΈ", "Майло", "ΠœΠ΅Ρ€Ρ„ΠΈ"]

dogs.append("Π ΠΈΠ³Π»ΠΈ")

print(dogs)

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ insert() для добавлСния элСмСнта Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ мСсто индСкса Π² нашСм массивС. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

 

собаки = ["Π‘ΠΏΠΎΡ‚", "Макс", "Бэм", "Π§Π°Ρ€Π»ΠΈ", "ΠšΡƒΠΏΠ΅Ρ€", "Π“Π΅Ρ€Ρ†ΠΎΠ³", "МСдвСдь", "Π‘Π°Π΄Π΄ΠΈ", "Майло", "ΠœΠ΅Ρ€Ρ„ΠΈ"]

dogs.insert(1, "Wrigley")

print(dogs)

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ доступа

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

 

собаки = ["Π‘ΠΏΠΎΡ‚", "Макс", "Бэм", "Π§Π°Ρ€Π»ΠΈ", "ΠšΡƒΠΏΠ΅Ρ€", "Π”ΡŽΠΊ", "МСдвСдь", "Π‘Π°Π΄Π΄ΠΈ", "Майло", "ΠœΠ΅Ρ€Ρ„ΠΈ"]

x = dogs[0]

print(x)

Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ элСмСнту ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ этот элСмСнт, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ доступ ΠΊ Π½ΠΎΠΌΠ΅Ρ€Ρƒ индСкса ΠΈ устанавливаСм Π΅Π³ΠΎ Ρ€Π°Π²Π½Ρ‹ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ. НапримСр:

 

собаки = ["Π‘ΠΏΠΎΡ‚", "Макс", "Бэм", "Π§Π°Ρ€Π»ΠΈ", "ΠšΡƒΠΏΠ΅Ρ€", "Π”ΡŽΠΊ", "МСдвСдь", "Π‘Π°Π΄Π΄ΠΈ", "Майло", "ΠœΠ΅Ρ€Ρ„ΠΈ"]

собаки[0] = "Π”ΠΆΠ΅ΠΊ"

print(dogs)

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтов

БущСствуСт нСсколько способов удалСния элСмСнтов массива. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Python pop() для удалСния элСмСнта Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ. Допустим, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ послСдний элСмСнт нашСго массива собак :

 

собак = ["Π‘ΠΏΠΎΡ‚", "Макс", "Бэм", "Π§Π°Ρ€Π»ΠΈ", "ΠšΡƒΠΏΠ΅Ρ€", "Π“Π΅Ρ€Ρ†ΠΎΠ³", "МСдвСдь", "Buddy", "Milo", "Murphy"]

dogs.pop(9)

print(dogs)

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ remove() ΠΌΠ΅Ρ‚ΠΎΠ΄ для удалСния ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ элСмСнта ΠΈΠ· массива. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

 

собаки = ["Π‘ΠΏΠΎΡ‚", "Макс", "Бэм", "Π§Π°Ρ€Π»ΠΈ", "ΠšΡƒΠΏΠ΅Ρ€", "Π“Π΅Ρ€Ρ†ΠΎΠ³", "МСдвСдь", "Π‘Π°Π΄Π΄ΠΈ", "Майло", "ΠœΠ΅Ρ€Ρ„ΠΈ"]

dogs.remove("Duke")

print(dogs)

Найти Π΄Π»ΠΈΠ½Ρƒ массива

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ len() для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Π΄Π»ΠΈΠ½Ρ‹ массива. Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ количСство элСмСнтов Π² массивС собак , ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

 

собаки = ["Π‘ΠΏΠΎΡ‚", "Макс", "Бэм", "Π§Π°Ρ€Π»ΠΈ", "ΠšΡƒΠΏΠ΅Ρ€", " Π“Π΅Ρ€Ρ†ΠΎΠ³", "МСдвСдь", "Π‘Π°Π΄Π΄ΠΈ", "Майло", "ΠœΠ΅Ρ€Ρ„ΠΈ"]

x = len(dogs)

print(x)


ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡ‚Π΅ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Python бСсплатно.

НачнитС бСсплатно ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ основы Python с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ нашСй 1-нСдСльной ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π½ΠΎΠΉ вСрсии. ВСкстовыС схСмы обучСния Educative Π»Π΅Π³ΠΊΠΎ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΆΠΈΠ²ΡƒΡŽ срСду кодирования, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ быстрым ΠΈ эффСктивным.

Python для программистов


Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° массива Python

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ sort() для сортировки нашСго массива Π² порядкС возрастания ΠΈΠ»ΠΈ убывания. Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ наш массив Π² порядкС возрастания, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

 

числа = [5, 13, 25, 2, 98, 56, 4, 8]

числа.sort()

print(числа)

ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

 

числа = [5, 13, 25, 2, 98, 56, 4, 8]

числа. sort(reverse=True)

print(числа)

ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ элСмСнтов

9 0002 ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ count() , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ количСство элСмСнтов с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. НапримСр, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ количСство Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«SpotΒ» появляСтся Π² Π½Π°ΡˆΠΈΡ… собак массив:

 

собаки = ["Π‘ΠΏΠΎΡ‚", "Макс", "Бэм", "Π§Π°Ρ€Π»ΠΈ", "ΠšΡƒΠΏΠ΅Ρ€", "Π”ΡŽΠΊ", "МСдвСдь", "Π‘Π°Π΄Π΄ΠΈ", "Майло", "ΠœΠ΅Ρ€Ρ„ΠΈ" ]

x = dogs.count("Spot")

print(x)

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы Python

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΈΠ»ΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив β€” это ΠΊΠΎΠ³Π΄Π° Π² массивС Π΅ΡΡ‚ΡŒ массив. Π’ стандартном массивС ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΈΠΌΠ΅Π΅Ρ‚ индСкс. Π’ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° индСкса. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ мСняСтся Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π° Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ дня. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Ρ€ΡΡ‚ΡŒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹: ΠΎΠ΄Π½Ρƒ Ρ€Π°Π½ΠΎ ΡƒΡ‚Ρ€ΠΎΠΌ, ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ·Π΄Π½ΠΎ ΡƒΡ‚Ρ€ΠΎΠΌ, ΠΎΠ΄Π½Ρƒ Π΄Π½Π΅ΠΌ ​​и ΠΎΠ΄Π½Ρƒ Π²Π΅Ρ‡Π΅Ρ€ΠΎΠΌ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ эти Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ Π² Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС.

 

Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ = [[52, 60, 66, 63], [50, 58, 62, 60], [53, 61, 67,64], [51, 59, 65, 62]]

We ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ дСйствия с 2D-массивами, Ρ‡Ρ‚ΠΎ ΠΈ со стандартными массивами.

ПодвСдСниС ΠΈΡ‚ΠΎΠ³ΠΎΠ² ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги

ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΠ΅ΠΌ с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ шагами Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с массивами Python! ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π°ΠΆΠ½ΠΎΠΉ ΠΈ распространСнной структурой Π΄Π°Π½Π½Ρ‹Ρ…. Они ΠΈΠΌΠ΅ΡŽΡ‚ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ спСктр примСнСния ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ². Нам Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ прСдстоит ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ языкС программирования Python. НСкоторыС Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΄Π°Π»Π΅Π΅, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚:

  • Π‘Π»ΠΎΠ²Π°Ρ€ΠΈ Python
  • ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ Python
  • Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Python
  • Бинтаксис Python

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

ΠŸΡ€ΠΈΡΡ‚Π½ΠΎΠ³ΠΎ обучСния!

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Python

  • Анализ Π΄Π°Π½Π½Ρ‹Ρ… стал ΠΏΡ€ΠΎΡ‰Π΅: ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ ΠΏΠΎ Python Pandas
  • Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΡŽ строки Π² JavaScript, C++ ΠΈ Python
  • 50 вопросов ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² Π½Π° собСсСдовании ΠΏΠΎ Python

НАПИБАН BYErin Schaffer

Π Π°Π±ΠΎΡ‚Π° с массивами Python β€” ДокумСнтация ΠΏΠΎ Cython 3.

0.0rc1.dev0

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

На этой страницС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° синтаксиса:

  • БпСцифичСский для Cython синтаксис cdef , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ для объявлСния Ρ‚ΠΈΠΏΠΎΠ² ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌ ΠΈ Π»Π΅Π³ΠΊΠΎ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния C/C++.

  • Чистый синтаксис Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт статичСскиС объявлСния Ρ‚ΠΈΠΏΠΎΠ² Cython Π² чистый ΠΊΠΎΠ΄ Python, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ подсказки Ρ‚ΠΈΠΏΠ° PEP-484 ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ PEP 526.

    Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… C Π² синтаксисС Python, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ cython Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

     ΠΈΠΌΠΏΠΎΡ€Ρ‚Π½Ρ‹ΠΉ Ρ†ΠΈΡ‚ΠΎΠ½
     

    Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ чистый синтаксис Python, ΠΌΡ‹ Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСдавнюю Π Π΅Π»ΠΈΠ· Cython 3, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ здСсь Π±Ρ‹Π»ΠΈ внСсСны Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с вСрсиями 0.29.x.

Python ΠΈΠΌΠ΅Π΅Ρ‚ встроСнный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ массива, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ динамичСскиС ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹. МоТно ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡƒ массиву C Python массив ΠΈΠ· Cython. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя это ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Python. ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² списках ΠΈ ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ процСссами ΠΏΡ€ΠΈ использовании ΠΌΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π½ΠΎΡΡ‚ΡŒ .

По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ€ΡƒΡ‡Π½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ с malloc() ΠΈ free() , этот Π΄Π°Π΅Ρ‚ бСзопасноС ΠΈ автоматичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Python, ΠΈ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π’ массивС Numpy Π½Π΅Ρ‚ нСобходимости ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ массив ΠœΠΎΠ΄ΡƒΠ»ΡŒ встроСн ΠΊΠ°ΠΊ Π² Python, Ρ‚Π°ΠΊ ΠΈ Π² Cython.

БСзопасноС использованиС с прСдставлСниями памяти

 ΠΈΠ· массива ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° cython.cimports.cpython
массив ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°
a = cython.declare(массив.массив, массив.массив('i', [1, 2, 3]))
ca = cython.declare(cython.int[:], Π°)
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (ca [0])
 

NB: ΠΈΠΌΠΏΠΎΡ€Ρ‚ пСрСносит ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ массива Python Π² пространство ΠΈΠΌΠ΅Π½. Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ cimport добавляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, доступныС ΠΈΠ· Cython.

Массив Python создаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сигнатуры Ρ‚ΠΈΠΏΠ° ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ сигнатуры Ρ‚ΠΈΠΏΠΎΠ² см. Π² Python докумСнтация для модуля массива.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° массив Python присваиваСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с Ρ‚ΠΈΠΏΠΎΠΌ прСдставлСниС памяти, Π±ΡƒΠ΄ΡƒΡ‚ нСбольшиС Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы Π½Π° построСниС памяти Π²ΠΈΠ΄. Однако с этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° пСрСмСнная ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π±Π΅Π· Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов, ΠΏΠΎΠΊΠ° ΠΎΠ½ набираСтся:

 ΠΈΠ· массива ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° cython.cimports.cpython
массив ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°
a = cython.declare(массив.массив, массив.массив('i', [1, 2, 3]))
ca = cython.declare(cython.int[:], Π°)
@cython.cfunc
def overhead(a: cython.object) -> cython.int:
    ca: cython.int[:] = Π°
    Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ca[0]
@cython.cfunc
def no_overhead(ca: cython.int[:]) -> cython.int:
    Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ca[0]
print(overhead(a)) # Π±ΡƒΠ΄Π΅Ρ‚ построСно Π½ΠΎΠ²ΠΎΠ΅ прСдставлСниС памяти, слуТСбныС Π΄Π°Π½Π½Ρ‹Π΅
print(no_overhead(ca)) # ca ΡƒΠΆΠ΅ являСтся прСдставлСниСм памяти, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов
 

НСбСзопасный доступ ΠΊ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΌΡƒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ C с Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ ΠΈΠ·Π΄Π΅Ρ€ΠΆΠΊΠ°ΠΌΠΈ

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ C Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡƒ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΌΡƒ массиву ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Π³Ρ€Π°Π½ΠΈΡ† Π½Π΅ прСдусмотрСна, поэтому Π±ΡƒΠ΄ΡŒΡ‚Π΅ остороТны ΠΏΡ€ΠΈ использовании ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΈ подпись.

 ΠΈΠ· массива ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° cython.cimports.cpython
массив ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°
a = cython.declare(массив.массив, массив.массив('i', [1, 2, 3]))
# доступ ΠΊ основному ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ:
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (a.data.as_ints [0])
ΠΈΠ· cython.cimports.libc.string ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ memset
Π½Π°Π±ΠΎΡ€ памяти (a.data.as_voidptr, 0, Π΄Π»ΠΈΠ½Π° (a) * cython.sizeof (cython.int))
 

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ любая опСрация ΠΏΠΎ измСнСнию Π΄Π»ΠΈΠ½Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° массива ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ массивов

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ конструктор массива ΠΈΠ· модуля Python, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ массив Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°, Ρ‡Ρ‚ΠΎ ΠΈ шаблон, ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ количСство элСмСнтов. Массив инициализируСтся ноль ΠΏΠΎ запросу.

 ΠΈΠ· массива ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° cython.cimports.cpython
массив ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°
int_array_template = cython.declare(массив.массив, массив.массив('i', []))
cython.declare(newarray=массив. массив)
# ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив ΠΈΠ· 3 элСмСнтов Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°, Ρ‡Ρ‚ΠΎ ΠΈ шаблон
newarray = array.clone (int_array_template, 3, ноль = лоТь)
 

Массив Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€; это позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ запоминания пСрСраспрСдСлСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли элСмСнты Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ.

 ΠΈΠ· массива ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° cython.cimports.cpython
массив ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°
a = cython.declare(массив.массив, массив.массив('i', [1, 2, 3]))
b = cython.declare(массив.массив, массив.массив('i', [4, 5, 6]))
# Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ a с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ b, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости
массив.Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ(Π°, Π±)
# ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ a, оставив Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Ρ€ΠΈ исходных элСмСнта
array.resize (Π°, Π΄Π»ΠΈΠ½Π° (Π°) - Π΄Π»ΠΈΠ½Π° (Π±))
 

Бсылка API

Поля Π΄Π°Π½Π½Ρ‹Ρ…

 Π΄Π°Π½Π½Ρ‹Π΅.as_voidptr
data.as_chars
data.as_schars
data.as_uchars
data.as_shorts
data.as_ushorts
data.as_ints
data.as_uints
data.as_longs
data.as_ulongs
data.as_longlongs # трСбуСтся Python >=3
data.as_ulonglongs # трСбуСтся Python >=3
data. as_floats
data.as_doubles
data.as_pyunicodes
 

ΠŸΡ€ΡΠΌΠΎΠΉ доступ ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡƒ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΌΡƒ массиву C с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ; Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, myarray.data.as_ints .

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ доступны для Cython ΠΈΠ· модуля массива

 @cython.cfunc
@cython.exceptval(-1)
def resize(self: array.array, n: cython.Py_ssize_t) -> cython.int
 

БыстроС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°/пСрСраспрСдСлСниС. НС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΈΡ€Π°Ρ‰Π΅Π½ΠΈΠΉ; измСняСт Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ массива Ρ‚ΠΎΡ‡Π½ΠΎ Π΄ΠΎ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½ΠΎΠΉ суммы.


 @cython.cfunc
@cython.exceptval(-1)
def resize_smart(self: array.array, n: cython.Py_ssize_t) -> cython.int
 

Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π΅Π½ для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΈΡ€Π°Ρ‰Π΅Π½ΠΈΠΉ; ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ модСль роста, которая обСспСчиваСт Π°ΠΌΠΎΡ€Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Π΅ добавлСния.


 @cython.cfunc
@cython.inline
def clone (шаблон: array.array, длина: cython.Py_ssize_t, ноль: cython.bint) -> array.array
 

БыстроС созданиС Π½ΠΎΠ²ΠΎΠ³ΠΎ массива ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Π½ΠΎΠΌΡƒ массиву.