На самом деле я хотел умножить массив на 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, 2) * 3 в python REPL и посмотрите, что произойдет. Затем передайте этот результат в np.ones и посмотрите, что произойдет снова. Небольшой эксперимент - это все, что вам нужно сделать.
(1,2)*3 делает (1, 2, 1, 2, 1, 2) но np.ones((1,2)*3) дает array([[[[[[1., 1.]], [[1., 1.]]]], [[[[1., 1.]], [[1., 1.]]]]]])А что такое np.ones((1,2)*3).shape?
то же, что (1,2)*3. Интересно. Не могли бы вы объяснить суть?
np.ones принимает параметр «форма» и возвращает массив N-D в соответствии с формой. Если вы укажете np.ones((10,)), вы получите 1D-массив с 10 элементами... np.ones((3, 5)) даст вам 2D-массив размером 3x5 с 3*5=15 элементами,... и так далее. Вы поняли идею.
Прохладный. Не могли бы вы добавить это в качестве ответа?






np.ones принимает параметр shape и возвращает массив N-D в соответствии с вашей спецификацией. Например, с помощью np.ones((10,)) вы получите одномерный массив из 10 элементов... np.ones((3, 5)) предоставит вам двумерный массив размером 3x5 с 3*5=15 элементами... и так далее.
Теперь вы сделали (например) (1, 2) * 3, что, если вы запустите 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)
И аналогично, для остальных.
Вы случайно применяете оператор умножения к кортежам, а затем передаете их в
np.ones.