numpy meshgridを使用して非常に大きなグリッドを作成する必要があります。私はメッシュをしようとしている配列のための私のdtypeとしてint8を使用してメモリを節約するために。しかし、meshgridは型をint64に変更し続け、これは大量のメモリを使用します。ここでは、問題の簡単な例です...numpy meshgridがデフォルトのデータ型をint64に設定しないようにするには
import numpy
grids = [numpy.arange(1, 4, dtype=numpy.int8), numpy.arange(1, 5, dtype=numpy.int8)]
print grids
print grids[0].dtype, grids[0].nbytes
x1, y1 = numpy.meshgrid(*grids)
print x1.dtype, x1.nbytes
このスクリプトは
[array([1, 2, 3], dtype=int8), array([1, 2, 3, 4], dtype=int8)]
int8 3
int64 96
なぜ関数meshgridは、これを行うんを出力しますか?それを止める方法はありますか?私は巨大な配列を作成する必要がありますので、出力のデータ型を制御できない限り、meshgridを使用することはできません。これは意図された動作か、それとも気になるバグですか? numpyで使用した関数はすべて、データ型を保持するか、dtype引数を使用して変更することができます。 meshgrid関数はこれを可能にしていません。
'numpy.indices'を使用することもできる、とは' dtype'パラメータがあります。 – Benjamin
それは素晴らしい作品です!ちょうど私が探していたもの。 – b10hazard