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

Как Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π² Python (с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ ΠΈ Π±Π΅Π· Π½ΠΈΡ…)

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΡΡ‚Π°Ρ‚ΡŒΠΈ Β«Transpose a MatrixΒ».

БСгодня ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π² Python. Однако сначала Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим, Ρ‡Ρ‚ΠΎ прСдставляСт ΠΈΠ· сСбя ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° сама ΠΏΠΎ сСбС ΠΈ Π² Ρ‡Ρ‘ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ процСсс транспонирования.

Π˜Ρ‚Π°ΠΊ, ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° состоит ΠΈΠ· строк ΠΈ столбцов. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, Π½ΠΎ самый простой способ – ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ списки, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

matrix = [[1, 2, 4], [31, 17, 15]]

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ списки ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой строки, Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π²Π½ΡƒΡ‚Ρ€ΠΈ списка называСтся столбцом. Π˜Ρ‚Π°ΠΊ, Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ строки ΠΈ Ρ‚Ρ€ΠΈ столбца, Ρ‚.Π΅. ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ с ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ΠΉ 2 Π½Π° 3. Π‘Ρ‚ΠΎΠΈΡ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ индСксация Python начинаСтся с нуля.

ВранспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ мСняСм строки Π½Π° столбцы ΠΈΠ»ΠΈ столбцы Π½Π° строки. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ обсудим Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ транспонирования ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

ΠœΠ΅Ρ‚ΠΎΠ΄ 1. ВранспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ NumPy transpose()

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ, β€” это использованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ NumPy. NumPy Π² основном Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с массивами Π² Python, Π° для транспонирования ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ transpose().

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ всё ΠΏΠΎ порядку. Для Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ NumPy ΠΊΠ°ΠΊ np.

Π”Π°Π»ΡŒΡˆΠ΅, Π² ячСйкС Π½ΠΎΠΌΠ΅Ρ€ [25] ΠΌΡ‹ создаСм массив NumPy с ΠΈΠΌΠ΅Π½Π΅ΠΌ arr_matrix.

Π’ ячСйкС Π½ΠΎΠΌΠ΅Ρ€ [26] ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ transpose() для нашСй ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ – ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° arr_matrix, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ создали Ρ€Π°Π½Π΅Π΅.

Π’ ячСйкС Π½ΠΎΠΌΠ΅Ρ€ [27] ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π½Π° экран ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ arr_matrix.

А Π² ячСйкС Π½ΠΎΠΌΠ΅Ρ€ [28] – Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ arr_transpose. МоТСм Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π±Ρ‹Π»ΠΎ Π½ΡƒΠΆΠ½ΠΎ – Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ.

ΠœΠ΅Ρ‚ΠΎΠ΄ 2. ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° numpy.

transpose()

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π² Python с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ numpy.transpose(). ΠŸΡ€ΠΈ этом ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ transpose() Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°.

Π’ ячСйкС Π½ΠΎΠΌΠ΅Ρ€ [29] ΠΌΡ‹ создаСм ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ массив NumPy, с ΠΈΠΌΠ΅Π½Π΅ΠΌ arr_matrix.

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ arr_matrix Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ transpose() ΠΈ сохраняСм Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ arr_transpose.

Π’ ячСйкС Π½ΠΎΠΌΠ΅Ρ€ [31] ΠΌΡ‹ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ arr_matrix.

А дальшС ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π½Π° экран Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ arr_transpose. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

ΠœΠ΅Ρ‚ΠΎΠ΄ 3. ВранспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ SymPy

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ SymPy – это Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹. Π­Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΡƒΡŽ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΡƒ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ алгСбраичСских Π·Π°Π΄Π°Ρ‡.

Π‘Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΌ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ SymPy. Она Π½Π΅ поставляСтся вмСстС с Python ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, поэтому Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Ρ‘ Π² своСй систСмС, ΠΈΠ½Π°Ρ‡Π΅ ΠΊΠΎΠ΄ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Π’ ячСйкС Π½ΠΎΠΌΠ΅Ρ€ [34] ΠΌΡ‹ создаСм ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ sympy.

Π”Π°Π»ΡŒΡˆΠ΅, Π² ячСйкС [35], ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ transpose (T) ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈ сохраняСм Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ sympy_transpose.

Π’ ячСйкС Π½ΠΎΠΌΠ΅Ρ€ [36] ΠΌΡ‹ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ matrix. А Π² ячСйкС Π½ΠΎΠΌΠ΅Ρ€ [37] – Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ sympy_transpose. Как Π²ΠΈΠ΄ΠΈΠΌ, Ρƒ нас ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π°ΡΡŒ транспонированная ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°.

ΠœΠ΅Ρ‚ΠΎΠ΄ 4. ВранспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ с использованиСм Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°

Π’ Python ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π±Π΅Π· примСнСния ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. Для этого Π½Π°ΠΌ придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹.

ΠœΡ‹ создаСм ΠΎΠ΄Π½Ρƒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΡƒΡŽ (Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Ρ‡Ρ‚ΠΎ ΠΈ пСрвая) β€” для сохранСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² послС транспонирования. ΠŸΡ€ΠΈ этом Π²Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всСгда Π·Π½Π°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ исходной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ для Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΌΡ‹ создаСм Π½Π΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π°Π·ΠΌΠ΅Ρ€ исходной.

Π’ ячСйкС Π½ΠΎΠΌΠ΅Ρ€ [38] ΠΌΡ‹ создаСм ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π΅Π΅ Π½Π° экран.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ячСйкС ΠΌΡ‹ примСняСм «питоничСский» способ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ транспонированной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ. А ΠΈΠΌΠ΅Π½Π½ΠΎ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ списков со Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ for.

Π’ ячСйкС [40] ΠΌΡ‹ запускаСм Π΄Π²Π° Ρ†ΠΈΠΊΠ»Π° for. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Ρ†ΠΈΠΊΠ» ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для строк, Π° Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ – для столбцов.

Π’ ячСйкС Π½ΠΎΠΌΠ΅Ρ€ [41] ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Matrix. А Π² ячСйкС [42] β€” Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ trans_Matrix.

ΠœΠ΅Ρ‚ΠΎΠ΄ 5. ИспользованиС Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° списка

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ, β€” это использованиС Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° списка. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ с использованиСм Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ², Π½ΠΎ ΠΎΠ½ Π±ΠΎΠ»Π΅Π΅ «питоничСский». МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ способ транспонирования ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π² ΠΎΠ΄Π½ΠΎΠΉ строкС ΠΊΠΎΠ΄Π° Π±Π΅Π· использования Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ создаСм ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ m, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ списки.

Π—Π°Ρ‚Π΅ΠΌ Π² ячСйкС Π½ΠΎΠΌΠ΅Ρ€ [44] ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹, ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Однако здСсь ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ это Π² ΠΎΠ΄Π½Ρƒ строчку, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ списков. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‚ΡƒΡ‚ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ нСобходимости ΠΌΠ΅Π½ΡΡ‚ΡŒ индСксы [j] [i] мСстами, ΠΊΠ°ΠΊ ΠΌΡ‹ это Π΄Π΅Π»Π°Π»ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ Ρ€Π°Π·.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ячСйкС ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ m. ПослС этого Π² ячСйкС Π½ΠΎΠΌΠ΅Ρ€ [42] Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ trans_m. Как Π²ΠΈΠ΄ΠΈΠΌ, ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½.

ΠœΠ΅Ρ‚ΠΎΠ΄ 6. ВранспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pymatrix

Pymatrix – Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π° облСгчСнная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для ΠΌΠ°Ρ‚Ρ€ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Python. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ транспонированиС ΠΈ с Π΅Ρ‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ.

Π’ ячСйкС Π½ΠΎΠΌΠ΅Ρ€ [43] ΠΌΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ pymatrix. Она Π½Π΅ поставляСтся вмСстС с Python ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, поэтому, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π» ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π΅ Π² своСй систСмС ΠΏΠ΅Ρ€Π΅Π΄ использованиСм.

Π—Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ pymatrix ΠΌΡ‹ создаСм ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ (Π² ячСйкС [44]).

Π’ ячСйкС Π½ΠΎΠΌΠ΅Ρ€ [45] Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ trans() для нашСй ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΈ сохраняСм Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ pymatrix_transpose.

ΠŸΠΎΡ‚ΠΎΠΌ ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π½Π° экран ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ matrix. А Π² ячСйкС Π½ΠΎΠΌΠ΅Ρ€ [47] Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΡƒΠΆΠ΅ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ pymatrix_transpose. Как Π²ΠΈΠ΄ΠΈΠΌ, ΠΊΠΎΠ΄ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π» ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

ΠœΠ΅Ρ‚ΠΎΠ΄ 7. ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° zip

Zip – Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄ транспонирования ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

Π’ ячСйкС Π½ΠΎΠΌΠ΅Ρ€ [63] ΠΌΡ‹ создаСм Π½ΠΎΠ²ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ списки.

Π’ ячСйкС Π½ΠΎΠΌΠ΅Ρ€ [64] ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π² zip с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° *. ΠœΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ эту строку Π² Π½ΠΎΠ²Ρ‹ΠΉ список, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ становится транспонированной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ΠΉ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π˜Ρ‚Π°ΠΊ, сСгодня ΠΌΡ‹ рассмотрСли, ΠΊΠ°ΠΊ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π² Python. ΠœΡ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π½Π°ΠΌ Π² транспонировании ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ (с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ Π±Π΅Π· Π½ΠΈΡ…).

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ познакомились с нСсколькими Π½ΠΎΠ²Ρ‹ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ pymatrix ΠΈ sympy.

НадССмся, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π½Π΅ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ вопросов ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ подходящий способ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ.

ЛинСйная Π°Π»Π³Π΅Π±Ρ€Π° Π½Π° Python.

[Π£Ρ€ΠΎΠΊ 2].ВранспонированиС ΠœΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ рассмотрим ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ β€œΡ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ матрицы” ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½Π° выполняСтся Π½Π° Python. Π’Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… свойства этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

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

ВранспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ – это процСсс Π·Π°ΠΌΠ΅Π½Ρ‹ строк ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π½Π° Π΅Π΅ столбцы, Π° столбцов соотвСтствСнно Π½Π° строки. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Π°Ρ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° называСтся транспонированной. Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ транспонирования – Π±ΡƒΠΊΠ²Π° T.

➣ ЧислСнный ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Для исходной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹:

Вранспонированная Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

➀ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° Python

РСшим Π·Π°Π΄Π°Ρ‡Ρƒ транспонирования ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π½Π° Python. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ A:

>>> A = np.matrix('1 2 3; 4 5 6')
>>> print(A)
[[1 2 3]
[4 5 6]]

ВранспонируСм ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° transpose():

>>> A_t = A. transpose()
>>> print(A_t)
[[1 4]
[2 5]
[3 6]]

БущСствуСт сокращСнный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ получСния транспонированной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, ΠΎΠ½ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π΅Π½ Π² практичСском ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ:

>>> print(A.T)
[[1 4]
[2 5]
[3 6]]

Рассмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… свойства транспонированных ΠΌΠ°Ρ‚Ρ€ΠΈΡ†. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ слоТСния ΠΈ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†, Π° Ρ‚Π°ΠΊΠΆΠ΅ расчСт опрСдСлитСля Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΡƒΡ€ΠΎΠΊΠ°Ρ….

Бвойство 1. Π”Π²Π°ΠΆΠ΄Ρ‹ транспонированная ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Ρ€Π°Π²Π½Π° исходной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅:

➣ ЧислСнный ΠΏΡ€ΠΈΠΌΠ΅Ρ€

➀ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° Python

>>> A = np.matrix('1 2 3; 4 5 6')
>>> print(A)
[[1 2 3]
[4 5 6]]

>>> R = (A.T).T
>>> print(R)
[[1 2 3]
[4 5 6]]

Бвойство 2. ВранспонированиС суммы ΠΌΠ°Ρ‚Ρ€ΠΈΡ† Ρ€Π°Π²Π½ΠΎ суммС транспонированных ΠΌΠ°Ρ‚Ρ€ΠΈΡ†:

➣ ЧислСнный ΠΏΡ€ΠΈΠΌΠ΅Ρ€

βž€ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° Python

>>> A = np. matrix('1 2 3; 4 5 6')
>>> B = np.matrix('7 8 9; 0 7 5')
>>> L = (A + B).T
>>> R = A.T + B.T
>>> print(L)
[[ 8 Β 4]
[10 12]
[12 11]]
>>> print(R)
[[ 8 Β 4]
[10 12]
[12 11]]

Бвойство 3

. ВранспонированиС произвСдСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ† Ρ€Π°Π²Π½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡŽ транспонированных ΠΌΠ°Ρ‚Ρ€ΠΈΡ† расставлСнных Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС:

➣ ЧислСнный ΠΏΡ€ΠΈΠΌΠ΅Ρ€

➀ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° Python

>>> A = np.matrix('1 2; 3 4')
>>> B = np.matrix('5 6; 7 8')
>>> L = (A.dot(B)).T
>>> R = (B.T).dot(A.T)
>>> print(L)
[[19 43]
[22 50]]
>>> print(R)
[[19 43]
[22 50]]

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, для умноТСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ†, использовалась функция dot()Β ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΒ 

Numpy.

Бвойство 4. ВранспонированиС произвСдСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π½Π° число Ρ€Π°Π²Π½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡŽ этого числа Π½Π° Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ:

➣ ЧислСнный ΠΏΡ€ΠΈΠΌΠ΅Ρ€

➀ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° Python

>>> A = np.matrix('1 2 3; 4 5 6')
>>> k = 3
>>> L = (k * A).T
>>> R = k * (A.T)
>>> print(L)
[[ 3 12]
[ 6 15]
[ 9 18]]
>>> print(R)
[[ 3 12]
[ 6 15]
[ 9 18]]

Бвойство 5. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ исходной ΠΈ транспонированной ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚:

➣ ЧислСнный ΠΏΡ€ΠΈΠΌΠ΅Ρ€

➀ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° Python

>>> A = np.matrix('1 2; 3 4')
>>> A_det = np.linalg.det(A)
>>> A_T_det = np.linalg.det(A.T)
>>> print(format(A_det, '.9g'))
-2
>>> print(format(A_T_det, '.9g'))
-2

Π’Π²ΠΈΠ΄Ρƒ особСнностСй Python ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с числами с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ вычислСния опрСдСлитСля Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π΅Π²ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΡ… Ρ†ΠΈΡ„Ρ€ послС запятой (Π·Π° это ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β β€˜.

9g’).

P.S.

Π’Π²ΠΎΠ΄Π½Ρ‹Π΅ ΡƒΡ€ΠΎΠΊΠΈ ΠΏΠΎ β€œΠ›ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±Ρ€Π΅ Π½Π° Python” Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ страницС нашСго сайта. ВсС ΡƒΡ€ΠΎΠΊΠΈ ΠΏΠΎ этой Ρ‚Π΅ΠΌΠ΅ собраны Π² ΠΊΠ½ΠΈΠ³Π΅ β€œΠ›ΠΈΠ½Π΅ΠΉΠ½Π°Ρ Π°Π»Π³Π΅Π±Ρ€Π° Π½Π° Python”.

Если Π²Π°ΠΌ интСрСсна Ρ‚Π΅ΠΌΠ° Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Pandas.Β  Для Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с вводными ΡƒΡ€ΠΎΠΊΠ°ΠΌΠΈ. ВсС ΡƒΡ€ΠΎΠΊΠΈ ΠΏΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Pandas собраны Π² ΠΊΠ½ΠΈΠ³Π΅ β€œPandas. Π Π°Π±ΠΎΡ‚Π° с данными”.

Python ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для поиска транспонирования ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

ВранспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ получаСтся ΠΏΡƒΡ‚Π΅ΠΌ Π·Π°ΠΌΠ΅Π½Ρ‹ строк Π½Π° столбцы ΠΈ столбцов Π½Π° строки. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, транспонированиС A[][] получаСтся ΠΏΡƒΡ‚Π΅ΠΌ Π·Π°ΠΌΠ΅Π½Ρ‹ A[i][j] Π½Π° A[j][i].

Для ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹: ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ транспонированиС A[][] ΠΈ сохраняСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² B[][], ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ N для Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ измСрСния.

Python3

Β 

N = 4

Β 

Β 

ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (A,B):

Β 

90 019   для i в диапазонС (N):

для j в диапазонС (N):

    B[i][j] 90 019 = А[j][i]

Β 

А =
[ [
1 , 1 , 1 , 1 9001 9 ],

Β  [ 2 , 2 , 2 , 2 ],

Β  [ 3 , 9001 9 3 , 3 , 3 ],

[ 4 , 4 , 4 , 4 9001 9 ]]

Β 

Β 

B
= A[:][:]

Β 

Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (A, B)

Β 

Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ( "ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°" )

для i в диапазонС (N):

  для j в диапазонС (N):

Β Β  ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (B[i][j], " " , end = '')

Β  print ()

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

 Π Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°
1 2 3 4
2 2 3 4
3 3 3 4
4 4 4 4 

ВрСмСнная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ: O(n 2 )
Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ пространство: O(n 2 )

Для ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹: Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ транспонированиС A[][] ΠΈ сохраняСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π‘[][].

Python3

Β 

M = 3

N = 4

Β 

Β 

Π΄Π΅Ρ„ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (A, B):

Β 

  для i в диапазонС (N):

900 18    для j в диапазонС (M):

B[i][j] = A[j][i]

Β 

A = [ [ 1 , 1 , 1 , 1 ,

Β  2 , 2 ],

Β  [ 3 , 3 , 3 , 3 ]]

Β 

90 002 Β 

B = [[ 0 для x в диапазонС (M)] для y в диапазонС (N)] 900 03

Β 

Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (A, B)

Β 

ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ( "ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²" )

для i в диапазонС (N ):

  для j в диапазон (M):

Β Β  ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (B[i][j], " " , ΠΊΠΎΠ½Π΅Ρ† = 9002 0 '')

Β  ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ()Β 

Π’Ρ‹Π²ΠΎΠ΄:

 Π Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°
1 2 3
1 2 3
1 2 3
1 2 3 

ВрСмСнная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ : O(n*m)
Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ пространство : O(n*m)

На мСстС для ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹:

Python3

Β 

N = 4

Β 

def Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (A):

Β 

  для i в диапазон (N):

   для j в диапазон (i + 1 , N):

Β Β Β  A[i][j], A[j][i] = A[j][i], A[i][j]

Β 

A = [ [ 1 , 1 , 1 , 1 ], 9 0020

Β  [ 2 , 2 , 2 , 2 ],

Β  [ 3 , 3 , 3 , 3 ], 90 003 Β  [ 4 , 4 , 4 , 4 ]]

Β 

Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ(A)

Β 

ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ 90 019 (
"ИзмСнСнная ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°" )

для i в диапазонС (N):

  для j в 900 19 диапазон (N):

Β Β  ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (A[i] [j], " " , ΠΊΠΎΠ½Π΅Ρ† = '')

Β  ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ () 9 0003 Β  Β 

Π’Ρ‹Π²ΠΎΠ΄:

 ΠœΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Π°Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° являСтся
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4 

ВрСмСнная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ : O(n 2 )
Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ пространство : O(1)

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ ΠΏΠΎΠ»Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ транспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ для получСния Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ!

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ β„–4: ИспользованиС zip()

Π’ этом ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ zip(*matrix) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для «разархивирования» строк ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΈ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… элСмСнтов вмСстС. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ * ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ строк ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π² качСствС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ zip(). ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² списки с использованиСм понимания списка.

Алгоритм

1. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ.
2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ zip(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки вмСстС ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ· Π½ΠΈΡ… ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ.
3. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠΉΡ‚Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² список, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ списка.
4. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ список списков ΠΊΠ°ΠΊ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ.
5. РаспСчатайтС ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΈ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

Python3

ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° = [[ 1 , 1 , 1 , 1 ],

9001 8 Β Β Β Β Β Β Β Β Β Β  [ 2 , 2 , 2 , 2 ],

Β Β Β Β Β Β Β Β Β  [ 3 , 3 900 19 , 3 , 3 ],

Β Β Β Β Β Β Β Β Β Β  [ 4 , 4 , 4 , 4 ]]

Β 

Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ = [ список (строка) для ряд Π² zip ( * ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°)]

Β 

9 0019 ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ( "Π˜ΡΡ…ΠΎΠ΄Π½Π°Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°:" )

для ряд Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°:

Β Β Β Β  ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (строка)

Β 

ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ( "Вранспонированная ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°:" )

для строка Π² Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ:

Β Β Β Β  ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (строка)

Π’Ρ‹Ρ…ΠΎΠ΄

 Π˜ΡΡ…ΠΎΠ΄Π½Π°Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°:
[1, 1, 1, 1]
[2, 2, 2, 2]
[3, 3, 3, 3]
[4, 4, 4, 4]
Вранспонированная ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°:
[1, 2, 3, 4]
[1, 2, 3, 4]
[1, 2, 3, 4]
[1, 2, 3, 4] 92 элСмСнта.  ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ создаСм Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ Π² процСссС транспонирования, Π½ΠΎ ΠΎΠ½ΠΈ ΠΎΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ΡΡ послС прСобразования ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² списки. 

ΠœΠ•Π’ΠžΠ” 5: ИспользованиС спискового понимания 

ΠŸΠžΠ”Π₯ΠžΠ”:

Π’ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ транспонированиС Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ спискового понимания.

ΠΠ›Π“ΠžΠ Π˜Π’Πœ:

1.Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ 2D-список A с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ значСниями ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.
2.Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ списка, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ списка.
3. Π’ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ Π°Π½Π°Π»ΠΈΠ·Π΅ списка Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ строкам A ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠΈΡ‚Π΅ i-ΠΉ элСмСнт ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки.
4.Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Π½Ρ‹Π΅ элСмСнты Π² Π²ΠΈΠ΄Π΅ строки Π² список Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².
5. РаспСчатайтС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ, пСрСбирая ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку ΠΈ соСдиняя элСмСнты ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ.

Python3

A = [[ 1 , 900 19 1 , 1 , 1 ],

Β Β Β Β Β  [ 2 , 2 , 2 , 2 ],

Β Β Β Β Β  [ 3 , 3 , 3 , 3 ],

Β Β Β Β Β  [ 90 019 4 , 4 , 4 , 4 ]]

Β 

Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ = [[строка[i] для строка 90 019 Π² A] для i Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ( len (A[ 0 ]))]

Β 

для ряд 900 19 Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Β Β Β Β  Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ( T. ВранспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π² python ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹, ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ списка, функция zip() ΠΈ функция transpose() Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ NumPy.

ΠžΠ±Π»Π°ΡΡ‚ΡŒ примСнСния

Π‘Ρ‚Π°Ρ‚ΡŒΡ содСрТит Ρ‚Π°ΠΊΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹, ΠΊΠ°ΠΊ

  • Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² транспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π² Python.
  • Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ понимания Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ списка, Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Zip, Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ NumPy.

КаТдая ΠΈΠ· Ρ‚Π΅ΠΌ Ρ‡Π΅Ρ‚ΠΊΠΎ объяснСна с Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ, Π³Π΄Π΅ это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² транспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π² Python

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π² Python, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ сначала ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΈ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ.

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° прСдставляСт собой ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ массив Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (чисСл, Π±ΡƒΠΊΠ² ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²), располоТСнных Π² Π²ΠΈΠ΄Π΅ строк ΠΈ столбцов. ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° состоит ΠΈΠ· строк ΠΈ столбцов. Если количСство строк N ΠΈ количСство столбцов M . Π’ΠΎΠ³Π΄Π° ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° прСдставляСт собой ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ N x M . ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ Π½ΠΈΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° прСдставлСна ​​с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ индСксов.

Вранспонированная ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Π΅ΡΡ‚ΡŒ Π½Π΅ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°, получСнная ΠΏΡƒΡ‚Π΅ΠΌ Π·Π°ΠΌΠ΅Π½Ρ‹ строк Π½Π° столбцы ΠΈ столбцов Π½Π° строки. Если ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ N x M (N β€” нСсколько строк ΠΈ M β€” нСсколько столбцов), Ρ‚ΠΎ послС транспонирования ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° становится M x N (M β€” количСство строк ΠΈ N β€” нСсколько столбцов). ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ Π½ΠΈΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ транспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹. 9T.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… списков. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° = [[1, 2], [2, 3], [3, 4]] Как ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΈΠΌΠ΅Π΅Ρ‚ 3 строки ΠΈ 2 столбца, поэтому это ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° 3x2. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΊΠ°ΠΊ:

 
 [
    [1, 2],
    [2, 3],
    [3, 4]
]

 

ПослС транспонирования ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΈΠΌΠ΅Π΅Ρ‚ 2 строки ΠΈ 3 столбца, поэтому ΠΎΠ½Π° становится ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ΠΉ 2x3. ВранспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

 
 [
    [1, 2, 3],
    [2, 3, 4]
]
 

ВранспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π² Python ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами. Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ обсудим ΠΈΡ… ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ.

ВранспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ с использованиСм Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°

Как ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… списков (списков Π²Π½ΡƒΡ‚Ρ€ΠΈ списка). Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» (Ρ†ΠΈΠΊΠ» Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°). Запустив Π΄Π²Π° Ρ†ΠΈΠΊΠ»Π° (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ I ΠΈ j), ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Π² i-ΠΉ строкС ΠΈ j-ΠΌ столбцС, Π½Π° j-ю строку ΠΈ i-ΠΉ столбСц. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄Ρƒ для Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ понимания.

 
 # инициализация ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ (3 x 2).
ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° = [[1, 2], [2, 3], [3, 4]]
# ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ (2 x 3) для сохранСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.
Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ = [[0, 0, 0], [0, 0, 0]]
# итСрация строк, Π° Π·Π°Ρ‚Π΅ΠΌ столбцов ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки
для i Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (len (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°)):
    для j Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (len (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° [0])):
        Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ [j] [i] = ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° [i] [j]

ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ (Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ)
 

Π’Ρ‹Π²ΠΎΠ΄:

 
 [[1, 2, 3], [2, 3, 4]]
 

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ элСмСнт matrix[i][j] Π² транспонированиС[j][i].

ВранспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ с использованиСм понимания Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… списков

ΠœΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π² Python с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ², Π½ΠΎ ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ питоничСский способ (Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ способ). ПониманиС списков (созданиС списков Π½Π° основС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²) ΠΎΡ‡Π΅Π½ΡŒ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² этих сцСнариях, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ списков ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½Π°ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠ΅ ΠΊΠΎΠ΄Ρ‹ (ΠΊΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ мСньшС мСста). ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄Ρƒ для Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ понимания.

 
 # инициализация ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ (3 x 2).
ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° = [[1, 2], [2, 3], [3, 4]]
Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ = [[ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° [j] [i]
           для j Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (len (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°))] для i Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (len (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° [0]))]
ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ (Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ)
 

Π’Ρ‹Π²ΠΎΠ΄:

 
 [[1, 2, 3], [2, 3, 4]]
 

ВранспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Zip

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ транспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π² python, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ map() ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ zip().

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

  • map() β€” это функция, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ послС примСнСния прСдоставлСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· своих ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… элСмСнтов.
  • zip(iterable) Ρ‚Π°ΠΊΠΆΠ΅ являСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим ΠΊΠΎΠ΄ для Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ понимания.

 
 # инициализация ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ (3 x 2).
ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° = [[1, 2], [2, 3], [3, 4]]
Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ = ΠΊΠ°Ρ€Ρ‚Π° (список, zip (* ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°))
для i Π² транспонировании:
    ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (я)
 

Π’Ρ‹Π²ΠΎΠ΄:

 
 [1, 2, 3]
[2, 3, 4]
 

ВранспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ с использованиСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ NumPy

Π”ΠΎ сих ΠΏΠΎΡ€ ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ всС встроСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ транспонирования ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π² Python. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ NumPy, ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с массивами. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° NumPy ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½Π°ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с большими Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰ΠΈΠ΅ Π½Π°ΠΌ эффСктивно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ transpose() Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ NumPy. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим ΠΊΠΎΠ΄ для Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ понимания.

 
 ΠΈΠΌΠΏΠΎΡ€Ρ‚ numpy
# инициализация ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ (3 x 2).
ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° = [[1, 2], [2, 3], [3, 4]]
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (numpy.transpose (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°))
 

Π’Ρ‹Π²ΠΎΠ΄:

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ NumPy β€” это внСшняя Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ NumPy с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ pip install NumPy.

Для ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ транспонирования ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ получаСтся другая квадратная ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ число строк ΠΈ столбцов ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ (NxN):

 
 # инициализация ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ (3 x 3).
ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° = [[1, 2, 3], [12, 13, 14], [23, 24, 25]]
Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ = [[ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° [j] [i]
           для j Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (len (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°))] для i Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (len (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° [0]))]
ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ (Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ)
 

Π’Ρ‹Π²ΠΎΠ΄:

 
 [[1, 12, 23], [2, 13, 24], [3, 14, 25]]
 

Для ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

Как ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, транспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ NxM ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ NxM.

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

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