Если вызывать np.array()
для произвольного объекта, который не может быть повторен, numpy молча создает пустой массив без измерений.Тем не менее, его размер равен 1.
Документы с пустым размером говорят нам, что x.size эквивалентен вызову np.prod(x.shape)
.И документы для np.prod утверждают, что вызов np.prod для пустой последовательности дает нам 1. Вероятно, это так из-за того, что 1 является нейтральным элементом для умножения, что означает следующее.
Скажем, у вас есть массив [4, 2, 3]
.Элемент его продукта 24
.Теперь вы разбили его на два массива: [4]
и [2, 3]
.У вас есть хорошая собственность: np.prod([4, 2, 3]) == np.prod([4]) * np.prod([2, 3])
.Но если один из массивов пуст, вы хотите, чтобы это свойство все еще сохранялось: np.prod([4, 2, 3]) == np.prod([]) * np.prod([4, 2, 3])
.