好的,所以我觉得应该有一种使用matplotlib创建3维散点图的简单方法。我有一个3D
numpy数组(dset
),其中0表示我不想要的点,1表示我想要的点,基本上要绘制它,现在我必须逐步执行以下三个for:
循环:
for i in range(30):
for x in range(60):
for y in range(60):
if dset[i, x, y] == 1:
ax.scatter(x, y, -i, zdir='z', c= 'red')
关于如何更有效地完成此操作的任何建议?任何想法将不胜感激。
如果您有一个dset
类似的名称,并且只想获取1
值,则可以使用nonzero
,它“返回一个数组元组,每个数组对应一个a
,包含该维度中非零元素的索引。”
例如,我们可以制作一个简单的3d数组:
>>> import numpy
>>> numpy.random.seed(29)
>>> d = numpy.random.randint(0, 2, size=(3,3,3))
>>> d
array([[[1, 1, 0],
[1, 0, 0],
[0, 1, 1]],
[[0, 1, 1],
[1, 0, 0],
[0, 1, 1]],
[[1, 1, 0],
[0, 1, 0],
[0, 0, 1]]])
并找到非零元素的位置:
>>> d.nonzero()
(array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2]), array([0, 0, 1, 2, 2, 0, 0, 1, 2, 2, 0, 0, 1, 2]), array([0, 1, 0, 1, 2, 1, 2, 0, 1, 2, 0, 1, 1, 2]))
>>> z,x,y = d.nonzero()
如果我们想要更复杂的切割,我们可以做类似的(d > 3.4).nonzero()
事情,因为True的整数值为1,并且算作非零。
最后,我们绘制:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x, y, -z, zdir='z', c= 'red')
plt.savefig("demo.png")
给予
问题内容: 我想在Python(2.7)中创建一个3D数组,以便像这样使用: 数组的大小应该是我拥有的变量的大小。(n n n) 我尝试使用: 但这似乎不起作用。 我只能使用默认库,并且乘法(即)的方法将不起作用,因为它们链接到相同的指针,并且我需要所有值都是单独的 问题答案: 您应该使用列表理解: 您本可以使用一个看起来像您尝试过的语句来生成数据结构,但是由于内部列表是按引用复制的,因此它会产生
问题内容: 假设我有三个任意的一维数组,例如: 这三个数组代表3D网格中的采样间隔,我想为所有相交构造一个三维矢量的一维数组,例如 订单实际上对此并不重要。生成它们的明显方法是: 所以问题是…有没有更快的方法?我看过但没有找到(可能只是找不到正确的Google关键字)。 我目前正在使用此: 但是我感觉好像错过了一些聪明的幻想的Numpy方式吗? 问题答案: 要在上述示例中使用numpy网格,将可以
问题内容: 我有一个像这样初始化的数组: 我想将此数组转换为ArrayList 问题答案:
我从Python开始。我想创建一个新的数组,它将包含从数据帧中的一个列存储的所有单词。 此列已包含带有单词的数组: 这里有一个例子: 输出: ['p','open','terminal‘,'application','gt','utility','gt','terminal’,'type','p','pre','code','locate','insertfonthere‘,'br','code'
问题内容: 我有一个像这样的清单: 但是更大了,所以我需要一种有效的方法来使它变成像这样的树: 我不能使用诸如嵌套集之类的东西,也不能使用诸如becoas之类的东西,因为我可以在数据库中添加左右值。有任何想法吗? 问题答案: 哦,这就是我解决的方法:
3D 效果使您可以从二维 (2D) 图稿创建三维 (3D) 对象。您可以通过高光、阴影、旋转及其他属性来控制 3D 对象的外观。您还可以将图稿贴到 3D 对象中的每一个表面上。 有两种创建 3D 对象的方法:通过凸出或通过绕转。另外,还可以在三维空间中旋转 2D 或 3D 对象。要应用或修改现有 3D 对象的 3D 效果,请选择该对象,然后在 “外观 ”面板中双击该效果。 注:3D 对象在屏幕上可
我正在编写一个图像处理应用程序,使用javafx作为gui,我想在屏幕上显示处理过的图片。我的程序将图像处理为三维双数组,如double[3][1080][1920],因此我必须减少图像的颜色空间,并将双数组转换为byte或(如果可能)shorts,因为javafx的ImageView不支持浮点值或每个RGB组件的64位。我发现,Imageview只能从文件或inputstream加载数据,因此我
许多Cesium的使用者经常需要将整个城市的数十万个三维建筑可视化,用于房地产、城市规划或土木工程项目。为了更便捷地为这些行业创建有用的虚拟数据(digital twins),我们刚刚添加了在将KML/COLLADA上传到Cesium ion时嵌入特征数据的支持。 这意味着您现在可以从建模工具(如CityEngine、Rhino和3DCityDB)导出您的三维建筑,并在Cesium ion web