1

3つのベクトルで定義された平行六面体のボリュームデータがあります。

a 2.468000 0.000000 0.000000

b -1.234000 2.137351 0.000000

c 0.000000 0.000000 32.000000

私のグリッドは、軸a、b、cに対してそれぞれ40〜40500ポイントで記述されています。ご覧のとおり、3つのベクトルは相互に直交しておらず、これによりグリッドの読み取りに多くの問題が発生します。

私の当初の計画は、生データを読み取ってから、いくつかのボリュームスライスを抽出して、sagemathで処理し、非常に優れた画像を生成することでした。残念ながら、Pythonのドキュメントでそのようなものを探しましたが、直交ボリューム(ndgrid、easyviz.slice_)に使用できるコマンドがいくつか見つかりましたが、相互に直交していないボリュームデータには使用できませんでした。

Scitoolsパッケージとnumpyで、次のコマンドを見つけました

Numpyは以下を提供します:

  • mgrid
  • ogrid
  • メッシュグリッド

Scitoolsは以下を提供します:

  • ndgrid
  • ボックスグリッド

それから私はmatplotlib機能の中からも探していましたが、それらは非常に多く、私は単にあきらめました。

私を正しい方向に導くことができるフレンドリーなプログラマーはいますか?

4

1 に答える 1

2

あなたは正確に何を求めていますか?

(40, 40, 500, 3)次のように、位置にあるアイテム[a, b, c]が対応する平行六面体グリッドポイントのx、y、z座標を保持する3要素配列である形状の配列を簡単に作成できます。

a = np.array([2.468000, 0.000000, 0.000000]).reshape(1, 1, 1, 3)
b = np.array([-1.234000, 2.137351, 0.000000]).reshape(1, 1, 1, 3)
c = np.array([0.000000, 0.000000, 32.000000]).reshape(1, 1, 1, 3)
A = np.linspace(0, 1, num=40).reshape(40, 1, 1, 1)
B = np.linspace(0, 1, num=40).reshape(1, 40, 1, 1)
C = np.linspace(0, 1, num=500).reshape(1, 1, 500, 1)
grid = a * A + b * B + c * C
于 2012-12-17T21:10:39.580 に答える