πŸ”₯ Как ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива numpy: простыС способы ΠΈ совСты 2021

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива Π² NumPy, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ numpy.expand_dims().

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

import numpy as np

# Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ массив
arr = np.array([1, 2, 3])

# Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ размСрности Π΄ΠΎ 2D
new_arr = np.expand_dims(arr, axis=0)

# Π’Ρ‹Π²ΠΎΠ΄ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°
print(new_arr)

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ NumPy, создали исходный массив, Π° Π·Π°Ρ‚Π΅ΠΌ использовали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ expand_dims() для увСличСния размСрности массива Π΄ΠΎ 2D. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ массив с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ΠΌ.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива numpy

Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ numpy для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива. Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ размСрности массива позволяСт Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ нСсколько Π½ΠΎΠ²Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ.

Для увСличСния размСрности массива numpy ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ numpy.newaxis ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ reshape(). Оба ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π΄Π°ΡŽΡ‚ Π½Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ с Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ массива.

import numpy as np

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива
arr = np.array([1, 2, 3, 4, 5])

# Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ размСрности с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ numpy.newaxis
new_arr = arr[:, np.newaxis]
print(new_arr)

# Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ размСрности с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° reshape()
reshaped_arr = arr.reshape((1, -1))
print(reshaped_arr)

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° использованиС np.newaxis ΠΈ reshape(). Π’ ΠΎΠ±ΠΎΠΈΡ… случаях ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ массив с Π½ΠΎΠ²ΠΎΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ. Однако Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ тонкости, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ стоит ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ np.newaxis ΠΌΡ‹ добавляСм Π½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ массиву. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ использовали [:, np.newaxis], Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ Π² оси столбцов. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ [np.newaxis, :], Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ Π² оси строк.

Π‘ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ reshape() Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ массива. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ использовали (1, -1), Π³Π΄Π΅ -1 ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ„ΠΎΡ€ΠΌΠ° этого измСрСния вычисляСтся автоматичСски Π½Π° основС доступных элСмСнтов исходного массива.

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])

# Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ размСрности с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ numpy.newaxis
new_arr_2d = arr_2d[:, :, np.newaxis]
print(new_arr_2d)

# Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ размСрности с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° reshape()
reshaped_arr_2d = arr_2d.reshape((2, 3, 1))
print(reshaped_arr_2d)

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив arr_2d. Π‘ использованиСм np.newaxis ΠΈ reshape() ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив.

Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ размСрности массива numpy ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ситуациях. НапримСр, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ нСсколько массивов ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ осям, провСсти матСматичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ свСртку ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ надобраТСния. Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ размСрности Π΄Π°Ρ‘Ρ‚ Π²Π°ΠΌ большС гибкости ΠΈ возмоТности ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, стоит ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ размСрности массива numpy ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ np.newaxis ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° reshape(). Оба ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»ΡƒΡ‡ΡˆΠ΅ соотвСтствуСт вашим потрСбностям ΠΈ Π»Π΅Π³Ρ‡Π΅ читаСтся Π² контСкстС вашСго ΠΊΠΎΠ΄Π°.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

#5. ИзмСнСниС Ρ„ΠΎΡ€ΠΌΡ‹ массивов, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ осСй | NumPy ΡƒΡ€ΠΎΠΊΠΈ

β–Ί 3. Π˜Π—ΠœΠ•ΠΠ•ΠΠ˜Π• ЀОРМЫ ΠœΠΠ‘Π‘Π˜Π’ΠžΠ’. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠΏΠΈΠΉ | ΠšΡƒΡ€Ρ ΠΏΠΎ Numpy.

ΠžΡΠ½ΠΎΠ²Ρ‹ NumPy Python | ΠœΠ°ΡΡΠΈΠ²Ρ‹, ΠœΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ И ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Над Ними

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ”₯ Как ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива numpy: простыС способы ΠΈ совСты 2021