в numpy 1.7.0 и новее meshgrid
имеет аргумент ключевого слова sparse
. Настраивается разреженная сетка, поэтому при использовании она транслируется на полную сетку. Это может сэкономить большое количество памяти, например при использовании сетки для индексирования массивов.
In [2]: np.meshgrid(np.arange(10), np.arange(10), sparse=True)
Out[2]:
[array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]), array([[0],
[1],
[2],
[3],
[4],
[5],
[6],
[7],
[8],
[9]])]
Другой вариант - использовать меньшие целые числа, которые все еще могут представлять диапазон:
np.meshgrid(np.arange(10).astype(np.int8), np.arange(10).astype(np.int8),
sparse=True, copy=False)
хотя с numpy 1.9 использование этих меньших целых чисел для индексации будет медленнее, поскольку они будут внутренне преобразованы обратно в большие целые числа маленькими (размером с np.setbufsize) кусками.