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 数组。

所以基本上我现在有一个 NxNxN 矩阵,其中某些单元格在这种情况下包含密度(单位为 g/cm^3)。有没有办法将其转换为 2D 投影 - 密度的侧面视图,带有指示密集区域和较不密集区域的颜色条?

在 Matlab 中,我会这样做:

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

它给了我一个密度投影——我想用 Python 做同样的事情。有没有办法在 3D 投影中查看整个 NxNxN 矩阵?就像链接一样,但是是 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 方式更好)

如果您希望从另一个方向进行项目,只需更改轴参数(请记住,python 的索引从 0 开始,而不是像 matlab 那样从 1 开始)。

对于从通用方向进行的投影……嗯,这要困难得多。

顺便说一句,如果您需要查看一些 3D 数据,我强烈建议您花一些时间来探索 mayavi。它仍然是一个 python 库,并且对于 3d 成像非常强大:

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

于 2012-11-23T01:31:17.743 回答