Изменение формы означает, что вы упорядочиваете элементы массива в соответствии с другими измерениями.Например, arange(27)
создаст вектор, содержащий 27 элементов.Но с .reshape(9, 3)
вы указываете здесь, что хотите преобразовать его в двумерный массив, где первое измерение содержит 9 элементов, а второе - три элемента.Таким образом, результат будет выглядеть следующим образом:
>>> np.arange(27).reshape(9, 3)
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17],
[18, 19, 20],
[21, 22, 23],
[24, 25, 26]])
Но мы также можем сделать его массивом 3 × 3 × 3:
>>> np.arange(27).reshape(3, 3, 3)
array([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8]],
[[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17]],
[[18, 19, 20],
[21, 22, 23],
[24, 25, 26]]])
-1
используется в качестве значения, которое будет равнозначновыведите размер.
Итак, если у вас есть массив, содержащий 30 элементов, и вы измените их на m × 3 , тогда m равно 10. -1
равнотаким образом, не реальное значение, оно используется для удобства программиста, если, например, вы не знаете количество элементов, но знаете, что оно делится на три.
Следующие два ((при условии, что m
содержит 30 эквивалентных элементов:
m.reshape(10, 3)
m.reshape(-1, 3)
Обратите внимание, что вы можете указать максимум один -1
, так как в противном случае существует множество возможностей, и становится труднее найти действительную конфигурацию.