Numpy Reshape, кажется, выводит значение ошибки - PullRequest
0 голосов
/ 27 сентября 2018

Я пытался использовать reshape

import numpy as np
d = np.arange(30).reshape(1,3)

Это не работает cannot reshape array of size 30 into shape (1,3)

, но когда я пытался использовать

d = np.arange(30).reshape(-1,3) # This works

Почему мыдолжен использовать -1 ?.

Это действительно сбивает с толку, и я не могу понять, как работает изменение формы.Я был бы очень признателен, если бы кто-нибудь помог мне понять, как это работает.Я пробовал документы и другие посты в SO, но это было не очень полезно.

Я новичок в ML и Python.

1 Ответ

0 голосов
/ 27 сентября 2018

Изменение формы означает, что вы упорядочиваете элементы массива в соответствии с другими измерениями.Например, 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, так как в противном случае существует множество возможностей, и становится труднее найти действительную конфигурацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...