python - 在python中创建3D矩阵的2D投影

标签 python numpy visualization projection

简短版本:我有一个充满不同值的 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 投影 - 密度的侧面 View ,并用颜色条指示密集区域和密度较低的区域?

在 Matlab 中我会这样做:

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

它给了我一个密度投影 - 我想做同样的事情,但是用Python。有没有办法在 3D 投影中查看整个 NxNxN 矩阵?就像链接一样,但是是 3D 的。那太好了。

最佳答案

您可以在 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

关于python - 在python中创建3D矩阵的2D投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13521984/

相关文章:

python - scikit-learn 在多类分类中默认使用 One-Vs-Rest 吗?

python - 需要在 Python 中 reshape /转置 Dataframe

python - 使用 Numpy 对数据进行分箱以简化线性回归

python - matplotlib plt 中基于数据某些属性的多色图

python - 是否有与 prefuse 可视化工具包等效的 python?

python - 删除没有最长列表的数据帧行

Python 测验程序 - 读取 CSV 并解析问题/答案

python - 异步 : Is it possible to cancel a future been run by an Executor?

从网络边缘排斥文本

可视化 100k 顶点和 1M 边的 Python 工具?