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

Как Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π² 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

Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ напишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Python для транспонирования ΠΈ умноТСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ† ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ транспонирования ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π½Π° Python, Π΄Π°Π²Π°ΠΉΡ‚Π΅ сначала посмотрим Π½Π° ΠΎΠ±Π·ΠΎΡ€ транспонирования.

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

Если Π²Ρ‹ замСняСтС строки ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ столбцом Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, это называСтся транспонированиСм ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹. ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ X’. НапримСр: Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Π² i-ΠΉ строкС ΠΈ j-ΠΌ столбцС Π² X Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ Π² j-ю строку ΠΈ i-ΠΉ столбСц Π² X’.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΌΡ‹ взяли ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ A:

 
A = [[5, 4, 3] 
         [2, 4, 6] 
         [4, 7, 9] 
         [8, 1, 3]] 

At Π±ΡƒΠ΄Π΅Ρ‚ транспонированиСм ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, Ρ‚. Π΅. A [i] [j] = At [j] [i], ΠΈ поэтому At Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ:

 Π’ = [5, 2, 4, 8]
 [4, 4, 7, 1]
 [3, 6, 9, 3]

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

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ напишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Python для транспонирования Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, Π³Π΄Π΅ ΠΌΡ‹ выполняСм ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, ΠΊΠ°ΠΊ ΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ транспонирования ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° for.

Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся с использованиСм ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

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

 
# Define a matrix A 
A = [[5, 4, 3], 
         [2, 4, 6], 
         [4, 7, 9], 
         [8, 1, 3]] 
# Define an empty matrix of reverse order 
transResult = [[0, 0, 0, 0],   
                             [0, 0, 0, 0], 
                             [0, 0, 0, 0]] 
# Use nested for loop on matrix A 
for a in range(len(A)):   
   for b in range(len(A[0])):   
          transResult[b][a] = A[a][b] # store transpose result on empty matrix         
# Printing result in the output 
print("The transpose of matrix A is: ") 
for res in transResult:   
   print(res) 

Π’Ρ‹Ρ…ΠΎΠ΄:

The transpose of matrix A is:  
[5, 2, 4, 8] 
[4, 4, 7, 1] 
[3, 6, 9, 3]

Β 

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ напишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Python для умноТСния Π΄Π²ΡƒΡ… Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ† ΠΈ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅.

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΡƒΠΊΠ°ΠΆΠ΅Ρ‚, ΠΊΠ°ΠΊ ΡƒΠΌΠ½ΠΎΠΆΠ°Ρ‚ΡŒ Π΄Π²Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ значСния.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Python, Π΄Π°Π²Π°ΠΉΡ‚Π΅ сначала посмотрим Π½Π° ΠΎΠ±Π·ΠΎΡ€ умноТСния Π΄Π²ΡƒΡ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ†.

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† β€” это бинарная опСрация, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠ°Ρ€Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ† для создания Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ ΡƒΠΌΠ½ΠΎΠΆΠ°ΡŽΡ‚ΡΡ Π² соотвСтствии с элСмСнтарной Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΎΠΉ.

ΠŸΡ€ΠΈ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠΈ Π΄Π²ΡƒΡ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ† элСмСнты строки ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΡƒΠΌΠ½ΠΎΠΆΠ°ΡŽΡ‚ΡΡ Π½Π° элСмСнты столбца Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ взяли ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ A ΠΈ B:

A = [[5, 4, 3] [2, 4, 6] [4, 7, 9]] and, B = [[3, 2, 4] [4, 3, 6] [2, 7, 5]]

C Π±ΡƒΠ΄Π΅Ρ‚ объСдинСниСм Π΄Π²ΡƒΡ… ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†, Ρ‚. Π΅. C = A + B, ΠΈ поэтому C Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ:

  
C = [[37, 43, 59] 
        [34, 58, 62] 
        [58, 92, 103]] 

Как ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° C, Ρ‚Π°ΠΊΠΆΠ΅ извСстная ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†, ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ количСство строк, Ρ‡Ρ‚ΠΎ ΠΈ пСрвая ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° A), ΠΈ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ количСство столбцов, ΠΊΠ°ΠΊ ΠΈ вторая ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° B). ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Π΅ΠΌ этот Ρ‚ΠΈΠΏ умноТСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ† ΠΊΠ°ΠΊ скалярноС ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†.

Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ†

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

  1. ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Β Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°.
  2. ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° понимания Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ списка.

Π’ ΠΎΠ±ΠΎΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΌΡ‹ напишСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ для умноТСния Π΄Π²ΡƒΡ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ†.

Бпособ 1: ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°

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

Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

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

  
# Define two matrix A and B in program 
A = [[5, 4, 3], 
     [2, 4, 6], 
     [4, 7, 9]]   
B = [[3, 2, 4], 
     [4, 3, 6], 
     [2, 7, 5]]  
# Define an empty matrix to store multiplication result 
multiResult = [[0, 0, 0],   
               [0, 0, 0],   
               [0, 0, 0]] 
# Using nested for loop method on A & B matrix 
for m in range(len(A)):   
   for n in range(len(B[0])):   
          for o in range(len(B)):   
               multiResult[m][n] += A[m][o] * B[o][n] # Storing multiplication result in empty matrix 
# Printing multiplication result in the output 
print("The multiplication result of matrix A and B is: ") 
for res in multiResult:   
   print(res) 

Π’Ρ‹Ρ…ΠΎΠ΄:

The multiplication result of matrix A and B is:  
[37, 43, 59] 
[34, 58, 62] 
[58, 92, 103] 

Бпособ 2: ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° понимания Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ списка

Π’ этом ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ списка, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ умноТСния Π΄Π²ΡƒΡ… Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ†. ΠŸΡ€ΠΈ использовании Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° понимания списка ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Β«zip Π² PythonΒ» для Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ списка. Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

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

  
# Define two matrix A & B in the program 
A = [[5, 4, 3], 
         [2, 4, 6], 
         [4, 7, 9]]   
B = [[3, 2, 4], 
         [4, 3, 6], 
         [2, 7, 5]] 
# Using nested list method with zip in Python 
multiResult = [[sum(a * b for a, b in zip(Arow, Bcol))  
                       for Bcol in zip(*B)] 
                                for Arow in A] 
# Printing multiplication result in the output 
print("The multiplication result of matrix A and B is: ") 
for res in multiResult: 
    print(res) 

Π’Ρ‹Ρ…ΠΎΠ΄:

The multiplication result of matrix A and B is:  
[37, 43, 59] 
[34, 58, 62] 
[58, 92, 103] 

119401cookie-checkВранспонированиС ΠΈ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† Π½Π° Pythonyes

Π’Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π² ΠΎΠ΄Π½Ρƒ строку Π² Python

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ обсуТдСниС

Π£Π»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ

  • Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ слоТности: Easy
  • ПослСднСС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅: 24 Π”Π΅ΠΊ, 2021

  • Π§ΠΈΡ‚Π°Ρ‚ΡŒ
  • ΠžΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ
  • ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ обсуТдСниС

    Π£Π»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ

    Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ

    ВранспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ — это Π·Π°Π΄Π°Ρ‡Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ всС ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π² python (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ»). Но Π΅ΡΡ‚ΡŒ нСсколько интСрСсных способов ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС Π² ΠΎΠ΄Π½ΠΎΠΉ строкС.
    Π’ Python ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΊΠ°ΠΊ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ список (список Π²Π½ΡƒΡ‚Ρ€ΠΈ списка). ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт рассматриваСтся ΠΊΠ°ΠΊ строка ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹. НапримСр, m = [[1, 2], [4, 5], [3, 6]] прСдставляСт собой ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΈΠ· 3 строк ΠΈ 2 столбцов.
    ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт списка – m[0] ΠΈ элСмСнт ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки, ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ столбца – m[0][0] .

    1. ИспользованиС понимания Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ списка: Π’Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ списка ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ (m) Π² основном столбцС ΠΈ присваиваСм Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ rez, которая являСтся транспонированной m.

      m = [[ 1 , 2 ],[ 3 , 4 ],[ 5 , 6 ]]

      для Row в M:

      Print (ROW) 9004

      444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 ( . ] для j in range ( len (m))] for i in range ( len (m[ 0 ] ))]

      print ( "\n" )

      for row in rez:

      Β Β Β Β  print (row)

      Π’Ρ‹Ρ…ΠΎΠ΄:

      [1, 2]
      [3, 4]
      [5, 6]
      
      
      [1, 3, 5]
      [2, 4, 6]
       
    1. ИспользованиС zip: Zip Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ, Π³Π΄Π΅ i-ΠΉ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ содСрТит i-ΠΉ элСмСнт ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Ρ€Π°Π·Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΡƒΠ΅ΠΌ наш массив с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ *, Π° Π·Π°Ρ‚Π΅ΠΌ сТимаСм Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ транспонированиС.

      ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° = [( 1 , 2 , 3 ),( 4 , 5 , 6 ),( 7 , 8 , 9 ),( 10 , 11 , 12 )]

      for row in matrix:

      Β Β Β Β  print (row)

      print ( "\n" )

      t_matrix = zip ( * matrix)

      for row Π² T_MATRIX:

      ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ (ряд)

      Π’Ρ‹Ρ…ΠΎΠ΄:

        

      Π’Ρ‹Ρ…ΠΎΠ΄:

        

      :

      (1, 2, 3)
      (4, 5, 6)
      (7, 8, 9)
      (10, 11, 12)
      
      (1, 4, 7, 10)
      (2, 5, 8, 11)
      (3, 6, 9, 12)
       

      ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Π²ΠΈΠ΄Π΅ [[1,4,7,10][2,5,8,11][3,6,9,12]] , Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ t_matrix=map( список, zip(*ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°)).

    1. ИспользованиС numpy: NumPy β€” это ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ массивов ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для эффСктивного управлСния большими ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами. ΠœΠ΅Ρ‚ΠΎΠ΄ транспонирования Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ транспонированноС прСдставлСниС ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

      ΠΈΠΌΠΏΠΎΡ€Ρ‚ numpy

      matrix = [[ 1 , 2 , 3 ],[ 4 , 5 , 6 ]]

      print (matrix)

      print ( "\n" )

      print (numpy. transpose(matrix))

      Or, simply ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Β«.TΒ» послС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

      import numpy as np

      matrix = np.array([[ 1 , 2 , 3 ],[ 4 , 5 , 6 ]])

      ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ (ΠœΠ°Ρ‚Ρ€ΠΈΠΊΡ)

      . Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°.T)

      Π’Ρ‹Π²ΠΎΠ΄:

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

      ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Β«.TΒ» Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с массивами numpy

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

    Scope

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

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

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

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

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

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

    Вранспонированная ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Π΅ΡΡ‚ΡŒ Π½Π΅ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°, получСнная ΠΏΡƒΡ‚Π΅ΠΌ Π·Π°ΠΌΠ΅Π½Ρ‹ строк Π½Π° столбцы ΠΈ столбцов Π½Π° строки. Если ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π²Π½Π° 9Π’. ::: :::section.{tip}

    Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² python ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… списков. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° = [[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. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ N ΠΈ M ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ значСния, ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Π½Π΅ считаСтся ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ΠΉ. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ 2x5:

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

    Π’Ρ‹Π²ΠΎΠ΄:

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

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

    • ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° прСдставляСт собой ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ массив Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (чисСл, Π±ΡƒΠΊΠ² ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²), располоТСнных Π² Π²ΠΈΠ΄Π΅ строк ΠΈ столбцов. 9Π’.
    • Если ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ N x M , Ρ‚ΠΎ послС транспонирования ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° становится M x N .
    • ВранспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π² python ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ с использованиСм Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ², понимания Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ списка, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ zip() ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ transpose() Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ NumPy.
    • Бписок

    β€” транспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π² Python

    Π—Π°Π΄Π°Π²Π°Ρ‚ΡŒ вопрос

    Бпросил

    ИзмСнСно 1 Π³ΠΎΠ΄, 4 мСсяца Π½Π°Π·Π°Π΄

    ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΎ 170 тысяч Ρ€Π°Π·

    156

    Новинка! БохраняйтС вопросы ΠΈΠ»ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΠΉΡ‚Π΅ свой Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚.
    Π£Π·Π½Π°Ρ‚ΡŒ большС.

    Π—Π΄Π΅ΡΡŒ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° этот вопрос :

    Π’Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ список списков (14 ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²)

    Π—Π°ΠΊΡ€Ρ‹Ρ‚ 8 мСсяцСв Π½Π°Π·Π°Π΄.

    Π― ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ транспонирования ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ для Python, Π½ΠΎ Π½Π΅ ΠΌΠΎΠ³Ρƒ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. скаТи Ρƒ мСня

     theArray = [['a','b','c'],['d','e','f'],['g','h','i']]
     

    , ΠΈ я Ρ…ΠΎΡ‡Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ моя функция Π²Ρ‹Π΄Π°Π²Π°Π»Π°

     newArray = [['a','d','g'],['b','e','h'],['c', ' Ρ„', 'ΠΈ']]
     

    Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Ссли Π±Ρ‹ я ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π» этот Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π² Π²ΠΈΠ΄Π΅ столбцов ΠΈ строк, я Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π», Ρ‡Ρ‚ΠΎΠ±Ρ‹ строки ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»ΠΈΡΡŒ Π² столбцы, Π° столбцы Π² строки.

    Π― сдСлал это Π΄ΠΎ сих ΠΏΠΎΡ€, Π½ΠΎ это Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

     def matrixTranspose(anArray):
        транспонированный = [НСт] * len (массив [0])
        для t в диапазонС (len (anArray)):
            для tt в диапазонС (len (anArray [t])):
                транспонированный [t] = [НСт] * len (массив)
                транспонированный[t][tt] = массив[tt][t]
        ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ транспонирована
     
    • ΠΏΠΈΡ‚ΠΎΠ½
    • список
    • ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив

    0

    Python 2:

     >>> theArray = [['a','b','c'],['d','e','f'],['g','h', 'я']]
    >>> zip(*массив)
    [('a', 'd', 'g'), ('b', 'e', ​​'h'), ('c', 'f', 'i')]
     

    Python 3:

     >>> [*zip(*theArray)]
    [('a', 'd', 'g'), ('b', 'e', ​​'h'), ('c', 'f', 'i')]
     

    9

     >>> theArray = [['a','b','c'],['d','e','f'],['g','h','i']]
    >>> [список(i) для i в zip(*theArray)]
    [['a', 'd', 'g'], ['b', 'e', ​​'h'], ['c', 'f', 'i']]
     

    Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ списков создаСт Π½ΠΎΠ²Ρ‹ΠΉ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив с элСмСнтами списка вмСсто ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ.

    2

    Если ваши строки Π½Π΅ Ρ€Π°Π²Π½Ρ‹, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚Ρƒ :

     >>> Π½Π΅Ρ€ΠΎΠ²Π½Ρ‹ΠΉ = [['a','b','c'],['d','e'],[' Π³','Ρ‡','ΠΈ']]
    >>> ΠΊΠ°Ρ€Ρ‚Π°(НСт,*нСчСтная)
    [('a', 'd', 'g'), ('b', 'e', ​​'h'), ('c', None, 'i')]
     

    Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ: Π² Python 3 Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π°, вмСсто Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ itertools.zip_longest :
    Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: Π§Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π² Python 3.0

     >>> ΠΈΠΌΠΏΠΎΡ€Ρ‚ itertools
    >>> Π½Π΅Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ = [['a','b','c'],['d','e'],['g','h','i']]
    >>> список(itertools.zip_longest(*uneven))
    [('a', 'd', 'g'), ('b', 'e', ​​'h'), ('c', None, 'i')]
     

    0

    Намного ΠΏΡ€ΠΎΡ‰Π΅ с numpy:

     >>> arr = np.array([[1,2,3],[4,5,6],[7,8,9]])
    >>> ΠΎΠ±Ρ€.
    массив([[1, 2, 3],
           [4, 5, 6],
           [7, 8, 9]])
    >>> ΠΎΠ±Ρ€.Π’
    массив([[1, 4, 7],
           [2, 5, 8],
           [3, 6, 9]])
    >>> theArray = np.array([['a','b','c'],['d','e','f'],['g','h','i' ]])
    >>> массив
    массив([['а', 'б', 'с'],
           ['Π΄', 'Π΅', 'Ρ„'],
           ['Π³', 'Ρ‡', 'ΠΈ']],
          dtype='|S1')
    >>> theArray. T
    массив([['а', 'г', 'г'],
           ['Π±', 'Π΅', 'Ρ‡'],
           ['с', 'Ρ„', 'ΠΈ']],
          dtype='|S1')
     

    ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с исходным ΠΊΠΎΠ΄ΠΎΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π»Π°ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ transpose[t] для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² строкС:

     def matrixTranspose(anArray):
        транспонированный = [НСт] * len (массив [0])
        для t в диапазонС (len (anArray)):
            транспонированный [t] = [НСт] * len (массив)
            для tt в диапазонС (len (anArray [t])):
                транспонированный[t][tt] = массив[tt][t]
        ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ транспонирована
     

    Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, хотя Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ способы Pythonic для выполнСния Ρ‚Π΅Ρ… ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡, Π² Ρ‚ΠΎΠΌ числС @J.F. 9ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 0043 zip .

    1

    Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚ Π”ΠΆ. Π€. Π‘Π΅Π±Π°ΡΡ‚ΡŒΡΠ½Π°, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ список списков Ρ€Π°Π·Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с этим Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ сообщСниСм ΠΎΡ‚ ActiveState. ΠšΠΎΡ€ΠΎΡ‡Π΅:

    ВстроСнная функция zip выполняСт Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π½ΠΎ усСкаСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΄ΠΎ Π΄Π»ΠΈΠ½Ρ‹ ΠΊΡ€Π°Ρ‚Ρ‡Π°ΠΉΡˆΠ΅Π³ΠΎ списка, поэтому Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ элСмСнты ΠΈΠ· исходного Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ потСряны впослСдствии.

    Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ списка списков Ρ€Π°Π·Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

     def transposed(lists):
       Ссли Π½Π΅Ρ‚ списков: Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ []
       ΠΊΠ°Ρ€Ρ‚Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° (лямбда * строка: список (строка), * списки)
    def transposed2 (списки, defval = 0):
       Ссли Π½Π΅Ρ‚ списков: Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ []
       ΠΊΠ°Ρ€Ρ‚Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° (лямбда *строка: [элСмСнт ΠΈΠ»ΠΈ defval для элСмСнта Π² строкС], *списки)
     

    2

    Β«Π›ΡƒΡ‡ΡˆΠΈΠΉΒ» ΠΎΡ‚Π²Π΅Ρ‚ ΡƒΠΆΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½, Π½ΠΎ я Ρ€Π΅ΡˆΠΈΠ» Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ списки, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ΅ ΠΏΠΎ Python.

    Π’ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ транспонированный массив:

     def matrixTranspose(matrix):
        Ссли Π½Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°: Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ []
        return [[ row[ i ] для строки Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ ] для i Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ( len ( ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° [ 0 ] ) ) ]
     

    Π­Ρ‚ΠΎΡ‚ сохранит ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ транспонирования ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

     ΠΈΠΌΠΏΠΎΡ€Ρ‚ itertools
    Π΄Π΅Ρ„ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (list_of_lists):
      список Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° (itertools.izip_longest (* list_of_lists, fillvalue = ' '))
     

    Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ это с ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ списка, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅ ,'Здравствуй']] n = len (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°) Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ = [[строка [i] для строки Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅] для i Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (n)] print (transpose)

    Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Ρ‚ΠΈΠΏΠ° A = np. array([[1,2],[3,4]]), Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ A.T, Π½ΠΎ для Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π²ΠΈΠ΄Π° a = [1,2], a.T Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ транспонированиС! ΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ a.reshape(-1, 1), ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅

     ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ numpy ΠΊΠ°ΠΊ np
    а = np.массив ([1,2])
    print('a.T Π½Π΅ транспонируСт Python!\n','a = ',a,'\n','a.T = ', a.T)
    print('Π’Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€ a: \n',a.reshape(-1, 1))
    А = np.массив([[1,2],[3,4]])
    print('Π’Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ A: \n',A.T)
     

    Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Python.

     ΠΎΠ±Ρ€ = [
        ['Π°', 'Π±', 'Π²'],
        ['Π΄', 'Π΅', 'Ρ„'],
        ['Π³', 'Ρ‡', 'ΠΈ']
    ]
    Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ = [[arr[y][x] для y Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (len(arr))] для x Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (len(arr[0]))]
     

    2

     def matrixTranspose(anArray):
      транспонированный = [НСт] * len (массив [0])
      для i Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (len (транспонированном)):
        транспонированный [i] = [НСт] * len (транспонированный)
      для t в диапазонС (len (anArray)):
        для tt в диапазонС (len (anArray [t])):
            транспонированный[t][tt] = массив[tt][t]
      Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ транспонированный
    theArray = [['a','b','c'],['d','e','f'],['g','h','i']]
    ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (массив)
     
     ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ numpy ΠΊΠ°ΠΊ np #Import Numpy
    m=int(input("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ строку")) #Input НомСр строки
    n=int(input("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ столбСц")) #Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€ столбца
    a=[] #ΠŸΡƒΡΡ‚Π°Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°
    для i в диапазонС (м): #Row Input
        b=[] #ΠŸΡƒΡΡ‚ΠΎΠΉ список
        для j Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (n): # столбСц Π’Π²ΠΎΠ΄
            j=int(input("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ число Π² ΠšΠ°Ρ€ΠΌΠ°Π½ ["+str(i)+"]["+str(j)+"]")) #sow НомСр столбца строки
            b. append(j) #addVlaue в список
        a.append(b)#Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ список Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ
    a=np.array(a)#convert 1matrix as Numpy
    b=a.transpose()#Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Numpy
    print(a) #ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹
    print(b)#print Π’Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ
     
     #Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ
    ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°=[]
    m=input('Π²Π²Π΅Π΄ΠΈΡ‚Π΅ количСство строк, m =')
    n=input('Π²Π²Π΅Π΄ΠΈΡ‚Π΅ количСство столбцов, n = ')
    для я в диапазонС (м):
        ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°.Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅([])
        для j в диапазонС (n):
            elem=input('Π²Π²Π΅Π΄ΠΈΡ‚Π΅ элСмСнт:')
            ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°[i].append(элСмСнт)
    #ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ
    для я в диапазонС (м):
        для j в диапазонС (n):
            ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ [i][j],
        Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ '\ΠΏ'
    # ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ
    Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ=[]
    для j в диапазонС (n):
        Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.append([])
        для i в диапазонС (м):
            ent=ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°[i][j]
            Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ[j].append(ent)
    #print Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ
    для i в диапазонС (n):
        для j в диапазонС (м):
            ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ[i][j],
        Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ '\n'
     
     Π°=[]
    def showmatrix (a, m, n):
        для i в диапазонС (м):
            для j в диапазонС (n):
                k=int(input("Π²Π²Π΅Π΄ΠΈΡ‚Π΅ число")
                Π°.  Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ (ΠΊ)
    Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ (Π° [я] [j]),
    ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ('\Ρ‚')
    def showtranspose (a, m, n):
        для j в диапазонС (n):
            для я в диапазонС (м):
                Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ (Π° [я] [j]),
            ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ('\Ρ‚')
    Π°=((89,45,50),(130,120,40),(69,79,57),(78,4,8))
    print("данная ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° порядка 4x3 Ρ€Π°Π²Π½Π°:")
    ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ (Π°, 4, 3)
    print("Π’Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ:")
    ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ транспонированиС (Π°, 4, 3)
     

    0

     ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°):
       Ρ…=0
       транс=[]
       Π± = len (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° [0])
       Π° Π±!=0:
           транс.ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ([])
           Π±-=1
       для списка Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅:
           для элСмСнта Π² спискС:
              транс[x].append(элСмСнт)
              Ρ…+=1
           Ρ…=0
       Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ транс
     
     Π΄Π΅Ρ„ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°):
        списокБписков = []
        для строки Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (len (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° [0])):
            столбСц = []
            для столбца Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (len (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°)):
                colList.append (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° [столбСц] [строка])
        listOfLists.append (список столбцов)
        Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ listOfLists
     

    1

    `

     Π΄Π΅Ρ„ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ(ΠΌ):
        return(list(map(list,list(zip(*m))))) 

    `Π­Ρ‚Π° функция Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ транспонирования

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

     row,col = map(int,input().