Найти Π² Π”Π·Π΅Π½Π΅
МашинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅

πŸ”‘ ВранспонированиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ† Python.

Допустим Π΅ΡΡ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° (Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ список) Ρ€Π°Π·ΠΌΠ΅Ρ€Π° 2x3: >>> matrix = [[1, 2, 3], [4, 5, 6]] Как Π² ΠΎΠ΄Π½Ρƒ строку ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ мСстами строки ΠΈ столбцы (Π½Π°ΡƒΡ‡Π½ΠΎ: Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ)? >>> list(zip(*matrix)) [(1, 4), (2, 5), (3, 6)] ОбъяснСниС. Π—Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ список Π² список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². ΠŸΡ€ΠΈΠΌΠ΅Ρ€: >>> print(*matrix, sep=', ') [1, 2, 3], [4, 5, 6] Π’ спискС matrix Π±Ρ‹Π»ΠΎ 2 элСмСнта, ΠΈ Π²Ρ‹Π·ΠΎΠ² print стал Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½: >>> print(matrix[0], matrix[1], sep=', ') [1, 2, 3], [4, 5, 6] Π’Π΅ΠΏΠ΅Ρ€ΡŒ zip. Она Π±Π΅Ρ€Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (ΠΎΠ΄Π½Ρƒ, Π΄Π²Π΅, большС...) ΠΈ Π²ΠΎΠ²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список ΠΈΠ· ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ Π²ΠΈΠ΄Π°: [ (элСм0_ΠΈΠ·_ΠΏΠ΅Ρ€Π²ΠΎΠΉ_посл, элСм0_ΠΈΠ·_Π²Ρ‚ΠΎΡ€ΠΎΠΉ_посл, ...), Β (элСм1_ΠΈΠ·_ΠΏΠ΅Ρ€Π²ΠΎΠΉ_посл, элСм1_ΠΈΠ·_Π²Ρ‚ΠΎΡ€ΠΎΠΉ_посл, ...), Β ... ] Π£ нас Π±ΡƒΠ΄Π΅Ρ‚: [ (matrix[0][0] = 1, matrix[1][0] = 4), Β (matrix[1][0] = 2, matrix[1][1] = 5), Β (matrix[2][0] = 3, matrix[2][1] = 6) ] Но Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Π½Π΅ список ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ, Π° список списков – Ρ€Π΅Π·ΠΎΠ½Π½ΠΎ Π²ΠΎΠ·Ρ€Π°Π·ΠΈΡ‚Π΅ Π²Ρ‹. Π§Ρ‚ΠΎ ΠΆ! ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚

Допустим Π΅ΡΡ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° (Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ список) Ρ€Π°Π·ΠΌΠ΅Ρ€Π° 2x3:

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

Как Π² ΠΎΠ΄Π½Ρƒ строку ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ мСстами строки ΠΈ столбцы (Π½Π°ΡƒΡ‡Π½ΠΎ: Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ)?

>>> list(zip(*matrix))

[(1, 4), (2, 5), (3, 6)]

ОбъяснСниС. Π—Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ список Π² список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

>>> print(*matrix, sep=', ')

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

Π’ спискС matrix Π±Ρ‹Π»ΠΎ 2 элСмСнта, ΠΈ Π²Ρ‹Π·ΠΎΠ² print стал Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½:

>>> print(matrix[0], matrix[1], sep=', ')

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

Π’Π΅ΠΏΠ΅Ρ€ΡŒ zip. Она Π±Π΅Ρ€Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (ΠΎΠ΄Π½Ρƒ, Π΄Π²Π΅, большС...) ΠΈ Π²ΠΎΠ²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список ΠΈΠ· ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ Π²ΠΈΠ΄Π°:

[ (элСм0_ΠΈΠ·_ΠΏΠ΅Ρ€Π²ΠΎΠΉ_посл, элСм0_ΠΈΠ·_Π²Ρ‚ΠΎΡ€ΠΎΠΉ_посл, ...),

Β (элСм1_ΠΈΠ·_ΠΏΠ΅Ρ€Π²ΠΎΠΉ_посл, элСм1_ΠΈΠ·_Π²Ρ‚ΠΎΡ€ΠΎΠΉ_посл, ...),

Β ... ]

Π£ нас Π±ΡƒΠ΄Π΅Ρ‚:

[ (matrix[0][0] = 1, matrix[1][0] = 4),

Β (matrix[1][0] = 2, matrix[1][1] = 5),

Β (matrix[2][0] = 3, matrix[2][1] = 6) ]

Но Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Π½Π΅ список ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ, Π° список списков – Ρ€Π΅Π·ΠΎΠ½Π½ΠΎ Π²ΠΎΠ·Ρ€Π°Π·ΠΈΡ‚Π΅ Π²Ρ‹. Π§Ρ‚ΠΎ ΠΆ! ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Ρ„-Ρ†ΠΈΡŽ list, ΠΎΠ½Π° ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ Π΅Π³ΠΎ Π² список:

>>> list(map(list, zip(*matrix)))

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

Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚. ΠšΡΡ‚Π°Ρ‚ΠΈ, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ стал 3x2.Β 

А ΠΏΠΎΡ‚ΠΎΠΌ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π±Ρ‹ Π½Π΅ страдали вСлосипСдо-строСниСм для транспонирования ΠΌΠ°Ρ‚Ρ€ΠΈΡ† ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ Π±Ρ‹ numpy:

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

>>> matrix.T

array([[1, 4],

Β Β Β Β [2, 5],

Β Β Β Β [3, 6]])

Machinelearning

#machinelearning #artificialintelligence #ai #datascience #python #programming #technology #deeplearning