Como alterar o tipo de inteiro ao criar meshgrid com Numpy?

Oct 21 2020

Eu tenho o seguinte erro

MemoryError: Não é possível alocar 201. GiB para uma matriz com forma (2999, 2999, 2999) e tipo de dados int64

ao criar uma meshgrid com Numpy usando o seguinte código

dimension=3
tot_length=2000
list_no=range(1, tot_length)
arr = np.meshgrid ( *[list_no for _ in range ( dimension )] )

Posso saber onde alterar o int64 para int32 ou outra configuração possível que me permita maximizar o número do tot_lengthqual é maior do que o valor2000

Verifiquei a documentação , mas não consta a opção de alterar o tipo de dados para type32.

Respostas

1 Eric Oct 20 2020 at 23:01

Posso saber onde alterar o int64 para int32

NumPy está adivinhando int64porque você está dando a ele um rangeobjeto onde ele espera um array e ranges são sequências de int. Use uma matriz se não quiser adivinhar:

list_no = np.array(range(1, tot_length), dtype=np.int32)

ou mais simplesmente

list_no = np.arange(1, tot_length, dtype=np.int32)

Claro, você ainda precisará de 100 GiB de memória, o que ainda é muito grande.