In [494]: [x.shape for x in np.meshgrid(range(-10,10,1),range(-10,10,1),range(-1
...: 0,10,1),sparse=False)]
Out[494]: [(20, 20, 20), (20, 20, 20), (20, 20, 20)]
In [495]: [x.shape for x in np.meshgrid(range(-10,10,1),range(-10,10,1),range(-1
...: 0,10,1),sparse=True)]
Out[495]: [(1, 20, 1), (20, 1, 1), (1, 1, 20)]
Не разреженная сетка создает 3 трехмерных массива, которые вы присоединяете и преобразуете в массив из 3 столбцов. Редкая версия также производит 3D-массивы, но каждый из них имеет свою форму. С broadcasting
они могут использоваться таким же образом. Например, если сумма или умножена, результатом в обоих случаях является (20,20,20) массив. Но редкие из них не могут быть превращены в этот (20 * 20 * 20,3) массив без расширения.
Это не scipy sparse
массивы. Это совершенно другая концепция.
Посмотрите на один из этих (20,20,20)
массивов. Видите все повторяющиеся столбцы или строки? sparse
просто избегает повторять это. Он просто берет 20 элементов range
и изменяет их. Это позволяет broadcasting
делать неявные повторения.