numpy - 绘制一个 3 维 numpy 数组
问题描述
我有一个形状为 (128,128,384) 的 3d numpy 数组。我们称这个数组为“S”。该数组仅包含二进制值 0 或 1。
\now \我想以这样的方式得到这个数组的3d图,\我有一个索引网格(x,y,z)并且对于S的每个条目,当它是一个\我应该得到一个打印点3d 网格中的相应索引。例如,假设我在 S[120,50,36] 有 1 个条目,所以我应该在网格中的那个点得到一个点。
到目前为止,我已经尝试了很多方法,但是已经能够实现一种非常慢的方法,因此在我的情况下是无用的。该方法是遍历整个数组并使用散点图。\这是我的代码片段:
from numpy import np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
for i in range(0,128):
for j in range(0,128):
for k in range(0,384):
if S[i,j,k]==1:
ax.scatter(i,j,k,zdir='z', marker='o')
请向我建议任何比这更快的方法。
另外,请注意,我不是在尝试绘制数组中的条目。我的数组中的条目只是一个条件,它告诉我是否应该绘制对应于某些索引的图。
非常感谢
解决方案
您可以使用numpy.where
.
在您的示例中,删除 for 循环并使用:
i, j, k = np.where(S==1)
ax.scatter(i,j,k,zdir='z', marker='o')
推荐阅读
- c# - 使用 IIS 时用于 Windows 身份验证的自定义登录页面
- wordpress - 如何在推荐滑块中将滑块点转换为作者姓名?
- angular - 以编程方式触摸表单控件时,角度自定义材质控件不显示错误
- python - Python PIL 图像拆分为 RGB
- javascript - 如何使用正则表达式使用 imacros eval 删除文本中的最后一句
- python - 如何旋转熊猫数据框以包含加权平均值?
- qt - 将渐变应用于绘制的图形
- mongodb - 安装 mongodb 4.0 时出现连接错误
- angular - 在angular 5组件中调用外部js文件的函数
- frameworks - Entity Framework 6 Power Tools 不适用于 Visual Studio Community 2017