Какой аргумент передается в `np.ones` и как он здесь работает? - PullRequest
1 голос
/ 09 апреля 2019

Я на самом деле хотел умножить массив на 3 и попытался использовать * 3 внутри фигуры.Затем я понял, что это должно быть за пределами np.ones, как np.ones((1,2))*4.Но было интересно, почему это дает экспоненциальные результаты.Может кто-нибудь объяснить, пожалуйста, мне следующее поведение?

np.ones((1,2)*1) возвращает array([[1., 1.]])

np.ones((1,2)*2) возвращает

array([[[[1., 1.]],
        [[1., 1.]]]])

np.ones((1,2)*3) возвращает

array([[[[[[1., 1.]],
          [[1., 1.]]]],
        [[[[1., 1.]],
          [[1., 1.]]]]]])

Аналогично, np.ones((1,2)*4) возвращает

array([[[[[[[[1., 1.]],
            [[1., 1.]]]],
          [[[[1., 1.]],
            [[1., 1.]]]]]],
        [[[[[[1., 1.]],
            [[1., 1.]]]],
          [[[[1., 1.]],
            [[1., 1.]]]]]]]])

К сожалению, документация не имеет никакого объяснения этому.

1 Ответ

1 голос
/ 09 апреля 2019

np.ones принимает параметр shape и возвращает массив ND согласно вашей спецификации.Например, с np.ones((10,)) вы получите одномерный массив с 10 элементами ... np.ones((3, 5)) даст вам двумерный массив размером 3x5 с 3 * 5 = 15 элементов, ... и так далее.

Теперь вы сделали (например) (1, 2) * 3, который, если вы запустите в python REPL, покажет

(1, 2) * 3
# (1, 2, 1, 2, 1, 2)

Передача этого в np.ones вернет массив 6Dформы (1, 2, 1, 2, 1, 2) с 8 элементами.

np.ones((1, 2)*3)     
array([[[[[[1., 1.]],    
          [[1., 1.]]]],
        [[[[1., 1.]],    
          [[1., 1.]]]]]])

_.shape
# (1, 2, 1, 2, 1, 2)

и аналогичные для остальных.

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