1

短いバージョン:さまざまな値でいっぱいのNxNxN行列があります。次のように正確に2D投影を作成したいと思います:http ://tinyurl.com/bellfkn (可能であれば3Dも!)

長いバージョン:次のループを使用して、次元NxNxNの密度行列を作成しました。

ndim = 512
massmat = np.zeros((ndim,ndim,ndim)) 
for i in range(0,npoints):
        massmat[int(x1[i]),int(y1[i]),int(z1[i])] = massmat[int(x1[i]),int(y1[i]),int(z1[i])] + mpart

densemat = massmat/volumeofcell

massmatはnumpy配列です。

つまり、基本的に、密度(g / cm ^ 3の単位)を含む特定のセルを持つNxNxN行列ができました。これを2D投影に変換する方法はありますか?密度の側面図で、密度の高い領域と密度の低い領域を示すカラーバーがありますか?

Matlabでは次のようにします。

imageArray2Dmesh = mean(densemat, 3);
figure
sc(imageArray2Dmesh, 'pink')

そしてそれは私に密度の予測を与えます-私は同じことをしたいのですがPythonで。NxNxNマトリックス全体を3D投影で表示する方法もありますか?リンクと同じですが、3Dです。それは素晴らしいことです。

4

1 に答える 1

1

numpyとmatplotlibで非常によく似たコードを使用できます。

import numpy as np
import pylab as plt

imageArray2Dmesh = np.mean(mesh_reshape, axis=2);
plt.figure()
plt.pcolor(imageArray2Dmesh, cmap = ,cmap=plt.cm.pink)
plt.colorbar()
plt.show()

さらにいくつかのコマンドがありますが、これはmatlabとmatplotlibのグラフィックスのアプローチが異なるためです(ヒント:長期的には、matplotlibの方法の方がはるかに優れています)

別の方向からプロジェクトが必要な場合は、axisパラメーターを変更するだけです(Pythonのインデックスはmatlabのように1からではなく、0からであることに注意してください)。

一般的な方向からの投影の場合...まあ、それはかなり難しいです。

ちなみに、3Dデータを見る必要がある場合は、マヤビを探索する時間を失うことを強くお勧めします。それはまだPythonライブラリであり、3Dイメージングには非常に強力です。

http://docs.enthought.com/mayavi/mayavi/auto/examples.html

于 2012-11-23T01:31:17.743 に答える