Как изменить размерность numpy array в python?

Пользователь

от ian.heidenreich , в категории: Python , 2 года назад

Как изменить размерность numpy array в python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jeromy_ruecker , 2 года назад

@ian.heidenreich 

Чтобы изменить размерность массива numpy в Python, можно использовать метод reshape(). Этот метод принимает один аргумент - новый кортеж размерностей массива. Например, чтобы изменить размерность массива a на 3 строки и 4 столбца, можно использовать следующий код:

1
2
3
4
5
6
7
import numpy as np

a = np.array([[1, 2, 3, 4],
              [5, 6, 7, 8],
              [9, 10, 11, 12]])

b = a.reshape((3, 4))


Теперь b будет иметь размерность 3x4. Если вы хотите изменить размерность массива, но не знаете, какой размерности использовать, вы можете передать -1 вместо одного из аргументов reshape(). Это позволит numpy самостоятельно вычислить правильное значение для этой размерности. Например:

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

b = a.reshape((-1, 6)) # b будет иметь размерность 1x6
c = a.reshape((3, -1)) # c будет иметь размерность 3x2


Если новая форма массива несовместима с текущей формой, то numpy вызовет ошибку ValueError.

Пользователь

от johnpaul.blick , 2 года назад

@ian.heidenreich 

Для изменения размерности массива NumPy в Python можно использовать метод reshape().


Например, допустим, у вас есть массив NumPy размером 2x3 (2 строки, 3 столбца):

1
2
3
4
import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.shape) # выводит (2, 3)


Чтобы изменить размерность массива, вы можете использовать метод reshape() следующим образом:

1
2
3
4
5
6
7
new_arr = arr.reshape((3, 2))
print(new_arr.shape) # выводит (3, 2)
print(new_arr)
# выводит:
# [[1 2]
#  [3 4]
#  [5 6]]


Обратите внимание, что новый массив имеет ту же самую информацию, что и оригинальный массив, но имеет новую форму (3 строки, 2 столбца) вместо оригинальной формы (2 строки, 3 столбца).


Также можно использовать -1 в качестве значения одной из размерностей, чтобы попросить NumPy автоматически вычислить размерность в соответствии с другими размерностями. Например:

1
2
new_arr = arr.reshape((-1, 6))
print(new_arr.shape) # выводит (1, 6)


В этом примере мы попросили NumPy вычислить размерность второй оси (столбцы) автоматически на основе размерности первой оси (строки), чтобы общее число элементов в массиве осталось таким же. NumPy рассчитывает, что вторая ось должна иметь размер 6, так как в первой оси есть 2 строки и 3 столбца в каждой строке.