ΠœΠΎΠ΄ΡƒΠ»ΡŒ числа ΠΏΠΈΡ‚ΠΎΠ½: ΠœΠΎΠ΄ΡƒΠ»ΡŒ числа Π½Π° языкС программирования Python

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

ΠœΠΎΠ΄ΡƒΠ»ΠΈ math ΠΈ numpy — ΠžΡΠ½ΠΎΠ²Ρ‹ Python

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ math ΠΈ numpy для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ матСматичСских Π·Π°Π΄Π°Ρ‡.

Π’Π°ΠΆΠ½ΠΎΠ΅ ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠ΅: количСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… Π½Π΅ позволяСт Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΡ… ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π² ΠΎΠ΄Π½ΠΎΠΉ Π³Π»Π°Π²Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ лишь Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡ… возмоТности, Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π²Ρ‹ смоТСтС Π½Π°ΠΉΡ‚ΠΈ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Бсылка Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π±ΡƒΠ΄Π΅Ρ‚ Π² ΠΊΠΎΠ½Ρ†Π΅ Π³Π»Π°Π²Ρ‹.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° math являСтся стандартной Π² Python ΠΈ содСрТит ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… матСматичСских Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ констант. ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ докумСнтация Python выдСляСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ этого модуля:

  • Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ чисСл ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСдставлСния. Рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…:

    • math.comb(n, k) – Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство сочСтаний ΠΈΠ· n элСмСнтов ΠΏΠΎ k элСмСнтам Π±Π΅Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ ΠΈ Π±Π΅Π· ΡƒΡ‡Ρ‘Ρ‚Π° порядка. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ, сколькими способами ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ 3 ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ· мноТСства Π² 12 ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (порядок Π½Π΅ Π²Π°ΠΆΠ΅Π½):

      import math
      print(math. comb(12, 3))  # 220
      
    • math.factorial(x) – Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» Ρ†Π΅Π»ΠΎΠ³ΠΎ Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ числа x:

      print(math.factorial(5))  # 120
      
    • math.gcd(*integers) – Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ наибольший ΠΎΠ±Ρ‰ΠΈΠΉ Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ (ΠΠžΠ”) для чисСл-Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ опрСдСлСния ΠΠžΠ” для Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π΄Π²ΡƒΡ… чисСл появилась Π² Python вСрсии 3.9:

      print(math.gcd(120, 210, 360))  # 30
      
    • math.lcm(*integers) – Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ наимСньшСС ΠΎΠ±Ρ‰Π΅Π΅ ΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ (НОК) для чисСл-Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Ѐункция появилась Π² Python вСрсии 3.9:

      print(math.lcm(10, 20, 30, 40))  # 120
      
    • math.perm(n, k=None) – Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΉ ΠΈΠ· n элСмСнтов ΠΏΠΎ k элСмСнтам Π±Π΅Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ ΠΈ с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ порядка. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° k Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ, Ρ‚ΠΎ возвращаСтся количСство пСрСстановок мноТСства ΠΈΠ· n элСмСнтов:

      print(math.perm(4, 2))  # 12
      print(math.perm(4))  # 24
      
    • math. prod(iterable, start=1) – Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ элСмСнтов ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° iterable. Если iterable пустой, Ρ‚ΠΎ возвращаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° start:

      print(math.prod(range(10, 21)))  # 6704425728000
      
  • Π‘Ρ‚Π΅ΠΏΠ΅Π½Π½Ρ‹Π΅ ΠΈ логарифмичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. НСкоторыС ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:

    • math.exp(x) – Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ex:

      print(math.exp(3.5))  # 33.11545195869231
      
    • math.log(x, base) – Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌΠ° ΠΎΡ‚ x ΠΏΠΎ основанию base. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° base Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ, Ρ‚ΠΎ вычисляСтся Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ. ВычислСниС производится ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅ log(x) / log(base)

      :

      print(math.log(10))  # 2.302585092994046
      print(math.log(10, 2))  # 3.3219280948873626
      
    • math.pow(x, y) – Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x Π² стСпСни y. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ** происходит ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΠΎΠΈΡ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² вСщСствСнныС числа:

      print(math. pow(2, 10))  # 1024.0
      print(math.pow(4.5, 3.7))  # 261.1477575641718
      
  • ВригономСтричСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Доступны Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ синус (sin(x)), косинус (cos(x)), тангСнс (tan(x)), арксинус (asin(x)), арккосинус (acos(x)), арктангСнс (atan(x)). ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΡƒΠ³ΠΎΠ» задаётся ΠΈ возвращаСтся Π² Ρ€Π°Π΄ΠΈΠ°Π½Π°Ρ…. Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ особСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

    • math.dist(p, q) – Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π•Π²ΠΊΠ»ΠΈΠ΄ΠΎΠ²ΠΎ расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ p ΠΈ q

      , Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΊΠ°ΠΊ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΎΠ΄Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹:

      print(math.dist((0, 0, 0), (1, 1, 1)))  # 1.7320508075688772
      
    • math.hypot(*coordinates) – Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° с ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… coordinates, ΠΈ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ систСмы ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚. Для Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΉ систСмы ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ Π³ΠΈΠΏΠΎΡ‚Π΅Π½ΡƒΠ·Ρ‹ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° ΠΏΠΎ Ρ‚Π΅ΠΎΡ€Π΅ΠΌΠ΅ ΠŸΠΈΡ„Π°Π³ΠΎΡ€Π°:

      print(math. hypot(1, 1, 1))  # 1.7320508075688772
      print(math.hypot(3, 4))  # 5.0
      
  • Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСобразования ΡƒΠ³Π»Π°. Доступны Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

    • math.degrees(x) – ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΡƒΠ³ΠΎΠ» ΠΈΠ· Ρ€Π°Π΄ΠΈΠ°Π½ Π² градусы:

      print(round(math.sin(math.radians(30)), 1))  # 0.5
      
    • math.radians(x) – ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΡƒΠ³ΠΎΠ» ΠΈΠ· градусов Π² Ρ€Π°Π΄ΠΈΠ°Π½Ρ‹.

      print(round(math.degrees(math.asin(0.5)), 1))  # 30.0
      
  • ГипСрболичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Доступны Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ acosh(x), asinh(x), atanh(x), cosh(x), sinh(x), tanh(x).

  • Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘Ρ€Π΅Π΄ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ интСрСс прСдставляСт Π“Π°ΠΌΠΌΠ°-функция. Она описываСт Π³Π»Π°Π΄ΠΊΡƒΡŽ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ f(x) = (x — 1)!, Π³Ρ€Π°Ρ„ΠΈΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‡ΠΊΠΈ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ значСниям Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Π° для Ρ†Π΅Π»Ρ‹Ρ… чисСл. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π“Π°ΠΌΠΌΠ°-функция ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ значСния Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Π° для вСщСствСнных чисСл:

    print(math. gamma(3))  # 2.0
    print(math.gamma(3.5))  # 3.323350970447842
    print(math.gamma(4))  # 6.0
    

Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ math ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ значСниями числа Пи (math.pi) ΠΈ экспонСнты (math.e).

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

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΏΡ€ΠΈΠ±Π°Π²ΠΊΡƒ Π² скорости обСспСчиваСт Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° numpy (Numerical Python, читаСтся ΠΊΠ°ΠΊ «Π½Π°ΠΌΠΏΠΠΉ»). Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° numpy частично написана Π½Π° языках Π‘ΠΈ ΠΈ Π€ΠΎΡ€Ρ‚Ρ€Π°Π½, благодаря Ρ‡Π΅ΠΌΡƒ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстро. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, numpy сочСтаСт Π² сСбС Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ языков Π‘ΠΈ ΠΈ Π€ΠΎΡ€Ρ‚Ρ€Π°Π½ ΠΈ простоту синтаксиса Python.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° numpy являСтся нСстандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ.

НСстандартныС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² Python нСсколькими способами. ΠœΡ‹ рассмотрим самый простой – установку ΠΈΠ· рСпозитория PyPI (Python Package Index). Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ – коллСкция Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для Python, хранящаяся Π½Π° сСрвСрС. Π’ настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ количСство Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ составляСт Π±ΠΎΠ»Π΅Π΅ 400 тысяч.

Для установки Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈΠ· рСпозитория Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ сСти Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚, Π° Π΄Π°Π»Π΅Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² консоли (Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅):

pip install Π½Π°Π·Π²Π°Π½ΠΈΠ΅>

Установим Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ numpy ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

pip install numpy

ПослС Π²Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ начнётся Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° установочного ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… зависит numpy. Π—Π°Ρ‚Π΅ΠΌ начнётся процСсс установки. Если установка ΠΏΡ€ΠΎΠΉΠ΄Ρ‘Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Ρ‚ΠΎ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π²Ρ‹Π²ΠΎΠ΄ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС:

Successfully installed numpy

Для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° numpy ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

import numpy as np

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΡ‹ смоТСм ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ

numpy ΠΏΠΎ Π½ΠΎΠ²ΠΎΠΌΡƒ ΠΈΠΌΠ΅Π½ΠΈ – np. Π­Ρ‚ΠΎ упростит Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. Π’Π°ΠΊΠΎΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ сообщСством программистов, поэтому стоит Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваш ΠΊΠΎΠ΄ Π±Ρ‹Π» понятСн ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ.

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

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ массив ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ способами. Один ΠΈΠ· Π½ΠΈΡ… – ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ array() для прСобразования списка Π² массив. Для доступа ΠΊ элСмСнтам массива Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ индСкс элСмСнта Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках. Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ начинаСтся с нуля:

import numpy as np
a = np.array([1, 2, 3, 4])
b = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])
print(f"a[0] = {a[0]}")
print(f"b[0] = {b[0]}")

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

a[0] = 1
b[0] = [1 2]

Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ массив a ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π²Π½ΡƒΡŽ 1. Π Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива b Ρ€Π°Π²Π½Π° 2. Π’ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ numpy массив a ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄Π½Ρƒ ось (Ρ‚Π΅Ρ€ΠΌΠΈΠ½ «axis» ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ) Π΄Π»ΠΈΠ½ΠΎΠΉ 4 элСмСнта, Π° массив b ΠΈΠΌΠ΅Π΅Ρ‚ 2 оси: пСрвая ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ 4, Π° Π΄Π»ΠΈΠ½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ оси Ρ€Π°Π²Π½Π° 2.

ΠœΠ°ΡΡΠΈΠ²Ρ‹ numpy ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ класса ndarray. НаиболСС Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ класса ndarray ΡΠ²Π»ΡΡŽΡ‚ΡΡ:

  • ndarray.ndim – Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ (количСство осСй) массива;
  • ndarray.shape – ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, значСния ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ содСрТат количСство элСмСнтов ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· осСй массива;
  • ndarray.size – ΠΎΠ±Ρ‰Π΅Π΅ количСство элСмСнтов массива;
  • ndarray.dtype – ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… элСмСнтов массива;
  • ndarray.itemsize – Ρ€Π°Π·ΠΌΠ΅Ρ€ памяти Π² Π±Π°ΠΉΡ‚Π°Ρ…, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡ‹ΠΉ ΠΎΠ΄Π½ΠΈΠΌ элСмСнтом массива.
import numpy as np
a = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])
print(f"a.ndim = {a.ndim}, a.shape = {a.shape}, a.size = {a.size}, a.dtype = {a.dtype}")

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

a. ndim = 2, a.shape = (4, 2), a.size = 8, a.dtype = int32

ВстроСнныС Π² numpy Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ Ρ‚ΠΈΠΏΠ°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… Π² языкС программирования Π‘ΠΈ. НапримСр, Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создали массив со значСниями Ρ‚ΠΈΠΏΠ° int32, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ†Π΅Π»Ρ‹Π΅ числа со Π·Π½Π°ΠΊΠΎΠΌ (ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅) ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ памяти 32 Π±ΠΈΡ‚Π°. Из ограничСния Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ памяти для Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π² numpy слСдуСт Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ массивы ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ значСния ΠΈΠ· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°. НапримСр, для

int32 этот числовой Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ составляСт ΠΎΡ‚ -2 147 483 648 Π΄ΠΎ 2 147 483 647.

ПокаТСм Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚, Ссли ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° для Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…. Для этого создадим массив Ρ‚ΠΈΠΏΠ° uint8 – Ρ†Π΅Π»Ρ‹Π΅ числа Π±Π΅Π· Π·Π½Π°ΠΊΠ° Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 8 Π±ΠΈΡ‚. Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для этого Ρ‚ΠΈΠΏΠ° ΠΎΡ‚ 0 Π΄ΠΎ 255. Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ dtype ΠΏΡ€ΠΈ создании массива:

import numpy as np
a = np.array([1, 2, 3], dtype="uint8")
a[0] = 256
print(a)

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

[0 2 3]

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта Π½Π΅ Π²Ρ‹ΡˆΠ»ΠΎ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, Π° Π±Ρ‹Π»ΠΎ взято с Π΅Π³ΠΎ Π½Π°Ρ‡Π°Π»Π°.

Π’ numpy ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ встроСнныС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π‘ Π½ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΈ создании массива Π±Π΅Π· указания Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ° Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅ dtype Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° numpy попытаСтся привСсти Π΅Π³ΠΎ ΠΊ Ρ‚ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ смоТСт Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всС значСния исходной ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

import numpy as np
a = np.array([1, 2.5, 3])
print(a)
print(a.dtype)
b = np.array(['text', 1, 2.5])
print(b)
print(b.dtype)

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

[1.  2.5 3. ]
float64
['text' '1' '2.5']
&ltU32

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ для массива a Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… float64, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ исходный список содСрТит вСщСствСнноС число. Для массива b Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… <U32, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ строки Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ Unicode Π΄Π»ΠΈΠ½ΠΎΠΉ 32 символа. Π’Π°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² исходной ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π΅ΡΡ‚ΡŒ элСмСнт-строка.

Для создания массива ΠΈΠ· Π½ΡƒΠ»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция np.zeros(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ с количСством чисСл, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ количСству осСй массива, Π° значСния Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ – количСство элСмСнтов ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· осСй.

import numpy as np
a = np.zeros((4, 3))
print(a)
print()
a = np.zeros((4, 3), dtype="int32")
print(a)

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]
[[0 0 0]
 [0 0 0]
 [0 0 0]
 [0 0 0]]

Ѐункция np.ones() создаёт массив Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ np.zeros(), Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· элСмСнтов-Π΅Π΄ΠΈΠ½ΠΈΡ†.

import numpy as np
a = np.ones((4, 3))
print(a)

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]

Для создания массива, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ³ΠΎ значСниями ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция np.arange(). Π­Ρ‚Π° функция ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ range(), Π½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· вСщСствСнных чисСл.

import numpy as np
a = np.arange(1, 10)
print(a)
print()
a = np.arange(1, 5, 0.4)
print(a)

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

[1 2 3 4 5 6 7 8 9]
[1.  1.4 1.8 2.2 2.6 3.  3.4 3.8 4.2 4.6]

Ѐункция np.linspace() создаёт массив ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ количСства вСщСствСнных Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ-распрСдСлённых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°.

import numpy as np
a = np.linspace(1, 5, 10)  # задаётся Π½Π°Ρ‡Π°Π»ΠΎ, ΠΊΠΎΠ½Π΅Ρ† Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΈ количСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
print(a)

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

[1.         1.44444444 1.88888889 2.33333333 2.77777778 3.22222222
 3.66666667 4.11111111 4.55555556 5.        ]

Для измСнСния размСрности массива ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция reshape(). Она ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, значСния ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π·Π°Π΄Π°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ массива ΠΏΠΎ осям. Ѐункция reshape() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ массив. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ размСрности количСство элСмСнтов Π² массивС Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ.

import numpy as np
a = np.zeros((4, 3), dtype="uint8")
print(a)
print()
a = a.reshape((2, 6))
print(a)

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

[[0 0 0]
 [0 0 0]
 [0 0 0]
 [0 0 0]]
[[0 0 0 0 0 0]
 [0 0 0 0 0 0]]

ΠœΠ΅Ρ‚ΠΎΠ΄ resize() мСняСт Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ исходного массива:

import numpy as np
a = np.zeros((4, 3), dtype="uint8")
print(a)
print()
a.resize((2, 2, 3))
print(a)

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

[[0 0 0]
 [0 0 0]
 [0 0 0]
 [0 0 0]]
[[[0 0 0]
  [0 0 0]]
 [[0 0 0]
  [0 0 0]]]

Если ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ размСрности Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ reshape() ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -1 ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ нСскольким осям, Ρ‚ΠΎ значСния размСрности Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ автоматичСски:

import numpy as np
a = np. zeros((4, 3), dtype="uint8")
print(a)
print()
a = a.reshape((2, 3, -1))
print(a)

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

[[0 0 0]
 [0 0 0]
 [0 0 0]
 [0 0 0]]
[[[0 0]
  [0 0]
  [0 0]]
 [[0 0]
  [0 0]
  [0 0]]]

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

import numpy as np
a = np.array([9, 8, 7])
b = np.array([1, 2, 3])
print(a + b)
print(a - b)
print(a * b)
print(a / b)

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

[10 10 10]
[8 6 4]
[ 9 16 21]
[9.         4.         2.33333333]

Для умноТСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ† ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ опСрация @ ΠΈΠ»ΠΈ функция dot:

import numpy as np
a = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])
b = np.array([[0, 0, 1],
              [0, 1, 0],
              [1, 0, 0]])
print(a @ b)

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

[[3 2 1]
 [6 5 4]
 [9 8 7]]

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ transpose() ΠΈ ΠΏΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ rot90(). ΠŸΡ€ΠΈ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ:

import numpy as np
a = np.arange(1, 13).reshape(4, 3)
print(a)
print("ВранспонированиС")
print(a.transpose())
print("ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π²ΠΏΡ€Π°Π²ΠΎ")
print(np.rot90(a))
print("ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π²Π»Π΅Π²ΠΎ")
print(np.rot90(a, -1))

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]
ВранспонированиС
[[ 1  4  7 10]
 [ 2  5  8 11]
 [ 3  6  9 12]]
ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π²ΠΏΡ€Π°Π²ΠΎ
[[ 3  6  9 12]
 [ 2  5  8 11]
 [ 1  4  7 10]]
ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π²Π»Π΅Π²ΠΎ
[[10  7  4  1]
 [11  8  5  2]
 [12  9  6  3]]

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ вычислСния суммы элСмСнтов массива, поиска минимального ΠΈ максимального элСмСнтов ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ для всСх элСмСнтов массива, Π½Π΅ учитывая Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ:

import numpy as np
a = np.array([[1, 2, 3],
             [4, 5, 6],
             [7, 8, 9]])
print(a.sum())
print(a.min())
print(a.max())

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

45
1
9

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… функциях ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ оси (индСксация с 0), Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ функция:

import numpy as np
a = np. array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])
print(a.sum(axis=0))  # сумма чисСл Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ столбцС
print(a.sum(axis=1))  # сумма чисСл Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС
print(a.min(axis=0))  # ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΏΠΎ столбцам
print(a.max(axis=1))  # максимум ΠΏΠΎ строкам

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

[12 15 18]
[ 6 15 24]
[1 2 3]
[3 6 9]

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

import numpy as np
a = np.arange(1, 13).reshape(3, 4)
print(a)
print()
print(a[:2, 2:])
print()
print(a[:, ::2])

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

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

Π’ Ρ†ΠΈΠΊΠ»Π΅ for ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΏΠΎ элСмСнтам ΠΏΠ΅Ρ€Π²ΠΎΠΉ оси массива:

import numpy as np
a = np.arange(1, 13). reshape(3, 4)
print(a)
for row in a:
    print(row)

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

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

Для Π»ΠΈΠ½Π΅Π°Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ flat, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ значСния массива:

import numpy as np
a = np.arange(1, 13).reshape(3, 4)
print(a)
print()
print("; ".join(str(el) for el in a.flat))

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

[[ 1  2  3  4]
 [ 5  6  7  8]
 [ 9 10 11 12]]
1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12

ПокаТСм Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Π² скорости Ρ€Π°Π±ΠΎΡ‚Ρ‹ массивов ΠΈ списков. ΠŸΠΎΡΡ‡ΠΈΡ‚Π°Π΅ΠΌ сумму ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… ΠΊΠΎΡ€Π½Π΅ΠΉ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… 107 чисСл.

import numpy as np
from time import time
t = time()
print(f"Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°: {sum(x ** 0.5 for x in range(10 ** 7))}.")
print(f"{time() - t} с.")
t = time()
print(f"Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ numpy: {np.sqrt(np.arange(10 ** 7)).sum()}.")
print(f"{time() - t} с.")

Π’Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°: 21081849486. 439312.
1.7823209762573242 с.
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ numpy: 21081849486.442448.
0.05197310447692871 с.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° numpy Ρ€Π΅ΡˆΠΈΠ»Π° Π·Π°Π΄Π°Ρ‡Ρƒ Π² 30 Ρ€Π°Π· быстрСС, Ρ‡Π΅ΠΌ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€.

Π—Π° счёт скорости Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ массивов Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° numpy ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для расчётов Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…. Π‘ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΌΡ‹ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅.

Для Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ изучСния Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ numpy Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ.

Числа ⚑️ Python 3 с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΊΠΎΠ΄Π°

Числа Π² Python 3 — Ρ†Π΅Π»Ρ‹Π΅, вСщСствСнныС, комплСксныС. Π Π°Π±ΠΎΡ‚Π° с числами ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ Π½ΠΈΠΌΠΈ.

Π¦Π΅Π»Ρ‹Π΅ числа (int)

Числа Π² Python 3 Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… чисСл. Они ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π½Π°Π±ΠΎΡ€ самых ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… матСматичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ:

Π‘ΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
x + yΠ‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅
x - yΠ’Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅
x * yΠ£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅
x / yΠ”Π΅Π»Π΅Π½ΠΈΠ΅
x // yΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ†Π΅Π»ΠΎΠΉ части ΠΎΡ‚ дСлСния
x % yΠžΡΡ‚Π°Ρ‚ΠΎΠΊ ΠΎΡ‚ дСлСния
-xΠ‘ΠΌΠ΅Π½Π° Π·Π½Π°ΠΊΠ° числа
abs(x)ΠœΠΎΠ΄ΡƒΠ»ΡŒ числа
divmod(x, y)ΠŸΠ°Ρ€Π° (x // y, x % y)
x ** yΠ’ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ
pow(x, y[, z])xy ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ (Ссли ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π·Π°Π΄Π°Π½)

Π’Π°ΠΊΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ†Π΅Π»Ρ‹Π΅ числа Π² python 3, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… языков, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π΄Π»ΠΈΠ½Π½ΡƒΡŽ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΡƒ (ΠΎΠ΄Π½Π°ΠΊΠΎ, это Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большС памяти). yΠŸΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π΅ ΠΈΠ»ΠΈx & yΠŸΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ ΠΈx << nΠ‘ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ сдвиг Π²Π»Π΅Π²ΠΎx >> yΠ‘ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ сдвиг Π²ΠΏΡ€Π°Π²ΠΎ~xΠ˜Π½Π²Π΅Ρ€ΡΠΈΡ Π±ΠΈΡ‚ΠΎΠ²

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

int.bit_length()
количСство Π±ΠΈΡ‚, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для прСдставлСния числа Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅, Π±Π΅Π· ΡƒΡ‡Ρ‘Ρ‚Π° Π·Π½Π°ΠΊΠ° ΠΈ Π»ΠΈΠ΄ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Π½ΡƒΠ»Π΅ΠΉ.
>>> n = -37
>>> bin(n)
'-0b100101'
>>> n.bit_length()
6
int.to_bytes(length, byteorder, *, signed=False)
Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку Π±Π°ΠΉΡ‚ΠΎΠ², ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… это число.
>>> (1024).to_bytes(2, byteorder='big')
b'\x04\x00'
>>> (1024).to_bytes(10, byteorder='big')
b'\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00'
>>> (-1024).to_bytes(10, byteorder='big', signed=True)
b'\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00'
>>> x = 1000
>>> x. to_bytes((x.bit_length() // 8) + 1, byteorder='little')
b'\xe8\x03'
classmethod int.from_bytes(bytes, byteorder, *, signed=False)
Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ число ΠΈΠ· Π΄Π°Π½Π½ΠΎΠΉ строки Π±Π°ΠΉΡ‚ΠΎΠ².
>>> int.from_bytes(b'\x00\x10', byteorder='big')
16
>>> int.from_bytes(b'\x00\x10', byteorder='little')
4096
>>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=True)
-1024
>>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=False)
64512
>>> int.from_bytes([255, 0, 0], byteorder='big')
16711680

БистСмы счислСния

Π’Π΅, Ρƒ ΠΊΠΎΠ³ΠΎ Π² школС Π±Ρ‹Π»Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ°, Π·Π½Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ числа ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСны Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² дСсятичной систСмС счислСния. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΈ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, число 19 Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ систСмС счислСния Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ 10011. Π’Π°ΠΊΠΆΠ΅ ΠΈΠ½ΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ числа ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ систСмы счислСния Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ. Python для этого прСдоставляСт нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:

int([object], [основаниС систСмы счислСния])
ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ Ρ†Π΅Π»ΠΎΠΌΡƒ числу Π² дСсятичной систСмС счислСния. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ систСма счислСния дСсятичная, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ любоС основаниС ΠΎΡ‚ 2 Π΄ΠΎ 36 Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ.
bin(x)
ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа Π² Π΄Π²ΠΎΠΈΡ‡Π½ΡƒΡŽ строку.
hex(Ρ…)
ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΡƒΡŽ строку.
oct(Ρ…)
ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа Π² Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½ΡƒΡŽ строку.

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

>>> a = int('19') # ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ строку Π² число
>>> b = int('19.5')  # Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π½Π΅ являСтся Ρ†Π΅Π»Ρ‹ΠΌ числом
Traceback (most recent call last):
  File "", line 1, in
ValueError: invalid literal for int() with base 10: '19.5'
>>> c = int(19.5)  # ΠŸΡ€ΠΈΠΌΠ΅Π½Ρ‘Π½Π½Π°Ρ ΠΊ числу с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ,
                   # отсСкаСт Π΄Ρ€ΠΎΠ±Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ
>>> print(a, c)
19 19
>>> bin(19)
'0b10011'
>>> oct(19)
'0o23'
>>> hex(19)
'0x13'
>>> 0b10011  # Π’Π°ΠΊ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ числовыС константы
19
>>> int('10011', 2)
19
>>> int('0b10011', 2)
19

ВСщСствСнныС числа (float)

ВСщСствСнныС числа ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ‚Π΅ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ Ρ†Π΅Π»Ρ‹Π΅. Однако (ΠΈΠ·-Π·Π° прСдставлСния чисСл Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅) вСщСствСнныС числа Π½Π΅Ρ‚ΠΎΡ‡Π½Ρ‹, ΠΈ это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкам:

>>> 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1
0.9999999999999999

Для высокой точности ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Decimal ΠΈ Fraction)).

Π’Π°ΠΊΠΆΠ΅ вСщСствСнныС числа Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π΄Π»ΠΈΠ½Π½ΡƒΡŽ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΡƒ:

>>> a = 3 ** 1000
>>> a + 0.1
Traceback (most recent call last):
  File "", line 1, in
OverflowError: int too large to convert to float

ΠŸΡ€ΠΎΡΡ‚Π΅Π½ΡŒΠΊΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с числами:

>>> c = 150
>>> d = 12.9
>>> c + d
162.9
>>> p = abs(d - c)  # ΠœΠΎΠ΄ΡƒΠ»ΡŒ числа
>>> print(p)
137.1
>>> round(p)  # ΠžΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅
137

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

float.as_integer_ratio()
ΠΏΠ°Ρ€Π° Ρ†Π΅Π»Ρ‹Ρ… чисСл, Ρ‡ΡŒΡ‘ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎ этому числу.
float.is_integer()
являСтся Π»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ†Π΅Π»Ρ‹ΠΌ числом.
float.hex()
ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ float Π² hex (ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΡƒΡŽ систСму счислСния).
classmethod float.fromhex(s)
float ΠΈΠ· ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ строки.
>>> (10.5).hex()
'0x1.5000000000000p+3'
>>> float.fromhex('0x1.5000000000000p+3')
10.5

Помимо стандартных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с числами (Π° Π² Python ΠΈΡ… Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ), Π² составС Python Π΅ΡΡ‚ΡŒ нСсколько ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ math прСдоставляСт Π±ΠΎΠ»Π΅Π΅ слоТныС матСматичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

>>> import math
>>> math.pi
3.141592653589793
>>> math.sqrt(85)
9.219544457292887

ΠœΠΎΠ΄ΡƒΠ»ΡŒ random Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ случайных чисСл ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ случайного Π²Ρ‹Π±ΠΎΡ€Π°.

>>> import random
>>> random.random()
0.15651968855132303

ΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½Ρ‹Π΅ числа (complex)

Π’ Python встроСны Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ комплСксныС числа:

>>> x = complex(1, 2)
>>> print(x)
(1+2j)
>>> y = complex(3, 4)
>>> print(y)
(3+4j)
>>> z = x + y
>>> print(x)
(1+2j)
>>> print(z)
(4+6j)
>>> z = x * y
>>> print(z)
(-5+10j)
>>> z = x / y
>>> print(z)
(0. 44+0.08j)
>>> print(x.conjugate())  # БопряТённоС число
(1-2j)
>>> print(x.imag)  # Мнимая Ρ‡Π°ΡΡ‚ΡŒ
2.0
>>> print(x.real)  # Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ
1.0
>>> print(x > y)  # ΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½Ρ‹Π΅ числа нСльзя ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ
Traceback (most recent call last):
  File "", line 1, in
TypeError: unorderable types: complex() > complex()
>>> print(x == y)  # Но ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π° равСнство
False
>>> abs(3 + 4j)  # ΠœΠΎΠ΄ΡƒΠ»ΡŒ комплСксного числа
5.0
>>> pow(3 + 4j, 2)  # Π’ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ
(-7+24j)

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с комплСксными числами ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ cmath.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ (%) Π² Python?

Когда ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Β«%Β», ΠΏΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π°ΠΌ Π½Π° ΡƒΠΌ, это Β«Π·Π½Π°ΠΊ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°Β», Π½ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π΄ΡƒΠΌΠ°Π΅ΠΌ ΠΎΠ± этом с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ языка, этот Π·Π½Π°ΠΊ Π½Π° самом Π΄Π΅Π»Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ имя ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ вычислСниях опСрация ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ (%) Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ остаток ΠΈΠ»ΠΈ Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ остаток послС дСлСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ числа Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅ (Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ).

Π”Π°Π½Ρ‹ Π΄Π²Π° ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… числа, a ΠΈ n, ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ n (a % n, сокращСнно a mod n) β€” это остаток ΠΎΡ‚ Π΅Π²ΠΊΠ»ΠΈΠ΄ΠΎΠ²Π° дСлСния числа a Π½Π° n, Π³Π΄Π΅ a β€” Π΄Π΅Π»ΠΈΠΌΠΎΠ΅, Π° n β€” Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ.

По сути, опСрация Python ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для получСния остатка ΠΎΡ‚ дСлСния. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ (% ) считаСтся арифмСтичСской ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ, наряду с +, β€” , /, *, **, //. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ языков ΠΎΠ±Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° этого ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами. Но Python Modulo Π² этом случаС унивСрсалСн. ΠžΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ Ρ†Π΅Π»ΠΎΠ΅ число ΠΈΠ»ΠΈ число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой .

Бинтаксис:

 Π°  %  Π±

 

Π—Π΄Π΅ΡΡŒ a дСлится Π½Π° b, ΠΈ возвращаСтся остаток ΠΎΡ‚ этого дСлСния.

Code: Β 

Python3

a = 13

b = 5

Β  Β 

c = a % B

ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ (A, "Mod" , B, "=" ,

,

C,

C,

C,

C,

C,

C, 9009

". )

Β  Β 

d = 15.0

e = 7.0

Β  Β 

f = d % E

ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ (D, "MOD" , E, "=" ,

,

77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 Π³Π³. )

Π’Ρ‹Ρ…ΠΎΠ΄:

 13 mod 5 = 3
15,0 ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ 7,0 = 1,0
 

Π­Ρ‚ΠΎ Π±Ρ‹Π» простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ использованиС синтаксиса ΠΈ Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ остаток ΠΎΡ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ числа ΠΎΡ‚ 1 Π΄ΠΎ n ΠΏΡ€ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π½Π° фиксированноС число k.

Python3

def findRemainder(n, k):

Β Β Β  Β 

Β Β  for i in range ( 1 , n + 1 ):

Β Β Β Β 

Β Β Β Β 

Β Β Β Β  rem = i % kΒ Β 

ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ (I, "MOD" , K, "=" , 9 00099957 "=" ,

99797967977957957957957 " . )

Β  Β 

if __name__ = = "__main__" :

Β Β Β  Β 

Β Β 

Β Β  n = 5

Β Β  k = 3

Β Β Β  Β 

Β Β 

Β Β  findRemainder(n, k)

Β  Π’Ρ‹Π²ΠΎΠ΄:

 1 mod 3 = 1
2 ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ 3 = 2
3 ΠΌΠΎΠ΄ 3 = 0
4 ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ 3 = 1
5 ΠΌΠΎΠ΄ 3 = 2
 

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

ЕдинствСнноС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ python, Ρ€Π°Π²Π½ΠΎ ZeroDivisionError . Π­Ρ‚ΠΎ происходит, Ссли ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ дСлитСля ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ становится Ρ€Π°Π²Π½Ρ‹ΠΌ ноль . Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ . Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎΠ± этом ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Python.

Python3

a = 14

b = 0

Β  Β 

try :

Β Β Β Β  print (a, 'mod' , b, '=' ,

Β Β Β Β Β Β Β Β Β Β  a % b, sep = " " )

Β Β Β Β Β  Β 

except ZeroDivisionError as err:

Β Β Β Β  print ( 'Cannot divide by zero!' +

Β Β Β Β Β Β Β Β Β Β  'Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°. ' )

Β  Π’Ρ‹Π²ΠΎΠ΄:

 НСльзя Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° ноль! Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°.
 

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ модуля Python β€” Javatpoint

ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ β†’ ← прСдыдущая

Как ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ модуля Python выполняСт Ρ‚Ρƒ ΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ числа. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ β€” это матСматичСский символ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для выполнСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ (+, -, * /) слоТСниС, Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ двумя числами, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π²ΠΈΠ΄Π΅ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа, Π° Ρ‚Π°ΠΊΠΆΠ΅ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой. . ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ компилятору Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ дСйствия Π½Π° основС ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ символа ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° для Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ числа.

Python Modulus Operator β€” это встроСнный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ числа ΠΏΡƒΡ‚Π΅ΠΌ дСлСния ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ числа Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠ΅. Он Ρ‚Π°ΠΊΠΆΠ΅ извСстСн ΠΊΠ°ΠΊ Python ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ . Π’ Python символ модуля прСдставлСн ΠΊΠ°ΠΊ символ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π° ( % ). Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ называСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ остатка.

Бинтаксис

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ синтаксис для получСния остатка ΠΏΡƒΡ‚Π΅ΠΌ дСлСния ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ числа Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠ΅.

Rem = X % Y

Π—Π΄Π΅ΡΡŒ X ΠΈ Y β€” Π΄Π²Π° Ρ†Π΅Π»Ρ‹Ρ… числа, Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŒ (%) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для получСния остатка ΠΎΡ‚ дСлСния ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ числа (X) Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠ΅ число (Y).

НапримСр, Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π° числа, 24 ΠΈ 5. И ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ остаток, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ ΠΌΠ΅ΠΆΠ΄Ρƒ числами 24 % 5. Π—Π΄Π΅ΡΡŒ 24 дСлится Π½Π° 5, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 4 Π² качСствС остатка ΠΈ 4 Π² качСствС остатка. частноС. Когда ΠΏΠ΅Ρ€Π²ΠΎΠ΅ число ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ дСлится Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅ число Π±Π΅Π· остатка, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ 0,

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π΄Π²ΡƒΡ… Ρ†Π΅Π»Ρ‹Ρ… чисСл с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° while

Π”Π°Π²Π°ΠΉΡ‚Π΅ напишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для получСния остатка ΠΎΡ‚ Π΄Π²ΡƒΡ… чисСл, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» while ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ модуля (%) Π² Python.

Get_rem.py

while True: # Ссли условиС while истинно, Ссли Π±Π»ΠΎΠΊ выполняСтся a = input('Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π½Π΅Ρ‚ (Π”Π°/НСт)?') if a. upper() != 'Y': # Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ 'Y', выполняСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π² a = int(input(' ΠŸΠ΅Ρ€Π²ΠΎΠ΅ число Ρ€Π°Π²Π½ΠΎ: ')) # ΠΏΠ΅Ρ€Π²ΠΎΠ΅ число b = int(input(' Π’Ρ‚ΠΎΡ€ΠΎΠ΅ число Ρ€Π°Π²Π½ΠΎ: ')) # Π²Ρ‚ΠΎΡ€ΠΎΠ΅ число print(a, ' % ', b, ' = ', a % b) # Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ a % b print(b, ' % ', a, ' = ', b % a) # Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ b % a

Π’Ρ‹Π²ΠΎΠ΄:

 Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π½Π΅Ρ‚ (Π”Π°/НСт)? Π”
ΠŸΠ΅Ρ€Π²ΠΎΠ΅ число: 37
Π’Ρ‚ΠΎΡ€ΠΎΠ΅ число: 5
37 % 5 = 2
5 % 37 = 5

Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π½Π΅Ρ‚ (Π”Π°/НСт)? Π”
ΠŸΠ΅Ρ€Π²ΠΎΠ΅ число: 37
Π’Ρ‚ΠΎΡ€ΠΎΠ΅ число: 5
24 % 5 = 4
5 % 24 = 5

Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π½Π΅Ρ‚ (Π”Π°/НСт)? Π”
ΠŸΠ΅Ρ€Π²ΠΎΠ΅ число: 37
Π’Ρ‚ΠΎΡ€ΠΎΠ΅ число: 5
28 % 5 = 3
5 % 28 = 5
 

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π΄Π²ΡƒΡ… чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой

Π”Π°Π²Π°ΠΉΡ‚Π΅ напишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для нахоТдСния остатка ΠΎΡ‚ Π΄Π²ΡƒΡ… Ρ†Π΅Π»Ρ‹Ρ… чисСл с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° модуля Π² Python.

Мод.py

x = float(input('ΠŸΠ΅Ρ€Π²ΠΎΠ΅ число:')) y = float (Π²Π²ΠΎΠ΄ ('Π’Ρ‚ΠΎΡ€ΠΎΠ΅ число:')) res = x % y # сохраняСм остаток Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ res print("ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π΄Π²ΡƒΡ… чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой: ", x, "%", y, " = ", res, sep = " ")

Π’Ρ‹Π²ΠΎΠ΄:

 ΠŸΠ΅Ρ€Π²ΠΎΠ΅ число: 40,5
 Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π½ΠΎΠΌΠ΅Ρ€: 20,5
ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π΄Π²ΡƒΡ… чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой: 40,5% 20,5 = 20,0
 

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ числа

Π”Π°Π²Π°ΠΉΡ‚Π΅ напишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для получСния остатка ΠΎΡ‚ Π΄Π²ΡƒΡ… ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» while ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ модуля (%) Π² Python.

Мод.py

ΠΏΠΎΠΊΠ° Π²Π΅Ρ€Π½ΠΎ: x = input(' Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ (Y/N)?') Ссли x.upper() != 'Y': ΠΏΠ΅Ρ€Π΅Ρ€Ρ‹Π² # Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π΄Π²Π° Ρ†Π΅Π»Ρ‹Ρ… числа ΠΈ сохранитС ΠΈΡ… Π² x ΠΈ y x = int (Π²Π²ΠΎΠ΄ (' ΠŸΠ΅Ρ€Π²ΠΎΠ΅ число: ')) y = int (Π²Π²ΠΎΠ΄ (' Π’Ρ‚ΠΎΡ€ΠΎΠ΅ число: ')) print("ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ числа: ", x, "%", y, " = ", x % y, sep = " ") print("ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ числа: ", y, "%", x, " = ", y % x, sep = " ")

Π’Ρ‹Π²ΠΎΠ΄:

 ΠŸΠ΅Ρ€Π²ΠΎΠ΅ число: -10
Π’Ρ‚ΠΎΡ€ΠΎΠ΅ число: 3
ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ числа: -10 % 3 = 2
ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ числа: 3 % -10 = -7
 Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ (Π”Π°/НСт)? Н
 

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π΄Π²ΡƒΡ… чисСл с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fmod()

Π”Π°Π²Π°ΠΉΡ‚Π΅ напишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для получСния остатка ΠΎΡ‚ Π΄Π²ΡƒΡ… чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ fmod() Π² Python.

Fmod.py

import math # ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ матСматичСский ΠΏΠ°ΠΊΠ΅Ρ‚ для использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fmod(). res = math.fmod(25. 5, 5.5) # ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ print ("ΠœΠΎΠ΄ΡƒΠ»ΡŒ с использованиСм fmod() Ρ€Π°Π²Π΅Π½:", res) ft = math.fmod(75,5, 15,5) print ("ΠœΠΎΠ΄ΡƒΠ»ΡŒ с использованиСм fmod() Ρ€Π°Π²Π΅Π½:", ft) # Π²Π·ΡΡ‚ΡŒ Π΄Π²Π° Ρ†Π΅Π»Ρ‹Ρ… числа ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ x = int(input("ΠŸΠ΅Ρ€Π²ΠΎΠ΅ число Ρ€Π°Π²Π½ΠΎ")) y = int (Π²Π²ΠΎΠ΄ ("Π’Ρ‚ΠΎΡ€ΠΎΠ΅ число")) out = math.fmod(x, y) # ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ print("ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π΄Π²ΡƒΡ… чисСл с использованиСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fmod() Ρ€Π°Π²Π΅Π½", x, "%", y, "=", out)

Π’Ρ‹Π²ΠΎΠ΄:

 ΠœΠΎΠ΄ΡƒΠ»ΡŒ с использованиСм fmod(): 3,5
 ΠœΠΎΠ΄ΡƒΠ»ΡŒ с использованиСм fmod(): 13,5
ΠŸΠ΅Ρ€Π²ΠΎΠ΅ число 24
Π’Ρ‚ΠΎΡ€ΠΎΠ΅ число 5
ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π΄Π²ΡƒΡ… чисСл с использованиСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fmod() Ρ€Π°Π²Π΅Π½ 24 % 5 = 4,0.
 

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ n чисСл с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π”Π°Π²Π°ΠΉΡ‚Π΅ напишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Python, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ числа n, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ Ρ†ΠΈΠΊΠ» for.

getRemainder.py

def getRemainder(n, k): для i Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (1, n + 1): # БохраняСм остаток Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ rem, ΠΊΠΎΠ³Π΄Π° i дСлится Π½Π° число k Ρ€Π΅ΠΌ = я % ΠΊ print(i, "%", k, "=", rem, sep = "") # ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° _name_ Ссли __name__ == "__main__": # ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ число для отобраТСния числа Π΄ΠΎ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ числа. n = int(input ("ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ число, Π΄ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ остаток")) k = int( input ("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ число")) # опрСдСляСм Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ # Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ опрСдСлСния ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ остаток (n, k)

Π’Ρ‹Π²ΠΎΠ΄:

 ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ число, Π΄ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ остаток 7
 Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ число 5
1 % 5 = 1
2 % 5 = 2
3 % 5 = 3
4 % 5 = 4
5 % 5 = 0
6 % 5 = 1
7 % 5 = 2
 

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ mod()

Π”Π°Π²Π°ΠΉΡ‚Π΅ напишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для дСмонстрации Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ mod() Π² Python.

Mod_fun.py

ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ numpy ΠΊΠ°ΠΊ np # ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ numpy x = np.array([40, -25, 28, 35]) # опрСдСляСм ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ массив y = np.array([20, 4, 6, 8]) # опрСдСляСм Π²Ρ‚ΠΎΡ€ΠΎΠΉ массив # Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ mod() ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ x ΠΈ y Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° print("ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π΄Π°Π½Π½ΠΎΠ³ΠΎ массива Ρ€Π°Π²Π΅Π½ ", np.mod (x, y))

Π’Ρ‹Π²ΠΎΠ΄:

 ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π΄Π°Π½Π½ΠΎΠ³ΠΎ массива Ρ€Π°Π²Π΅Π½ [0 3 4 3]
 

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ x ΠΈ y содСрТат массивы. ПослС этого ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ mod() для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ x ΠΈ y Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π΅Π»ΠΈΡ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ массив (x) Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ массив (y), Π° Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ числа.

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π΄Π²ΡƒΡ… чисСл с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ numpy.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ numpy ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ остатка для получСния модуля Π² Python.

Число.py

ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ numpy ΠΊΠ°ΠΊ np # ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ numpy ΠΊΠ°ΠΊ np # объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… с ΠΈΡ… значСниями число = 38 число2 = 8 res = np.remainder(num, num2) # ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ np.remainder() print("ΠœΠΎΠ΄ΡƒΠ»ΡŒ Ρ€Π°Π²Π΅Π½", num, "%", num2, "=", res) # ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ модуля num % num2

Π’Ρ‹Π²ΠΎΠ΄:

 ΠœΠΎΠ΄ΡƒΠ»ΡŒ Ρ€Π°Π²Π΅Π½ 38 % 8 = 6
 

Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ Python Modulus

Π’ Python, ΠΊΠΎΠ³Π΄Π° число дСлится Π½Π° ноль, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΈ это ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ называСтся ZeroDivisionError . Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΎΠ½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° число дСлится Π½Π° Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ, Ρ€Π°Π²Π½Ρ‹ΠΉ Π½ΡƒΠ»ΡŽ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° модуля Python, Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ напишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для дСмонстрации ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Python Exception in Modulus.

Π—Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ.py

x = int(input('ΠŸΠ΅Ρ€Π²ΠΎΠ΅ число: ')) y = int(input(' Π’Ρ‚ΠΎΡ€ΠΎΠ΅ число Ρ€Π°Π²Π½ΠΎ: ')) # ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ try: # ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ (Ρ…, '%', Ρƒ, '=', Ρ…% Ρƒ) ΠΊΡ€ΠΎΠΌΠ΅ ZeroDivisionError as err: # ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ print('НСвозмоТно Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ число Π½Π° ноль!' + 'Π˜Ρ‚Π°ΠΊ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°.')

Π’Ρ‹Π²ΠΎΠ΄:

 ΠŸΠ΅Ρ€Π²ΠΎΠ΅ число: 24
Π’Ρ‚ΠΎΡ€ΠΎΠ΅ число: 0
НСльзя Π΄Π΅Π»ΠΈΡ‚ΡŒ число Π½Π° ноль! Π˜Ρ‚Π°ΠΊ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°.
 

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, ΠΎΠ½ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚: Β« НСвозмоТно Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ число Π½Π° ноль! Π˜Ρ‚Π°ΠΊ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° Β».

ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *

© 2019 Π¨Ρ‚ΠΈΡ€Π»ΠΈΡ† Π‘Π΅Ρ‚ΡŒ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Ρ… салонов Π² ΠŸΠ΅Ρ€ΠΌΠΈ

Цифровая ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ, Ρ†Π²Π΅Ρ‚Π½ΠΎΠ΅ ΠΈ Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², сканированиС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ризография Π² ΠŸΠ΅Ρ€ΠΌΠΈ.