【发布时间】:2021-07-17 14:57:33
【问题描述】:
我有一个形状为 (128,128,384) 的 3d numpy 数组。我们称这个数组为“S”。该数组仅包含二进制值 0 或 1。
\now\我想得到这个数组的 3d 图,这样\我有一个索引网格 (x,y,z) 并且对于 S 的每个条目,当它是一个时\我应该得到一个点打印在 3d 网格中的相应索引处。例如假设我在 S[120,50,36] 有 1 个条目,所以我应该在网格中的那个点得到一个点。
到目前为止,我已经尝试了很多方法,但能够实现一种非常慢的方法,因此在我的情况下是无用的。该方法是遍历整个数组并使用散点图。 \这是我的代码的sn-p:
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 matplotlib scatter-plot numpy-ndarray scatter3d