首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从三个一维数组创建一个3D坐标的numpy数组,第一个索引变化最快

从三个一维数组创建一个3D坐标的numpy数组,第一个索引变化最快
EN

Stack Overflow用户
提问于 2017-07-30 00:48:28
回答 2查看 504关注 0票数 1

与问题here类似,我有三个任意的一维数组,例如:

代码语言:javascript
复制
x_p = np.array((0.0,1.1, 2.2, 3.3, 4.4))
y_p = np.array((5.5,6.6,7.7))
z_p = np.array((8.8, 9.9))

我需要

代码语言:javascript
复制
points = np.array([[0.0, 5.5, 8.8],
                   [1.1, 5.5, 8.8],
                   [2.2, 5.5, 8.8],
                   ...
                   [4.4, 7.7, 9.9]])

1)第一个索引的变化速度2)点是浮点坐标,而不是整数索引。3)我注意到从1.7.0版本开始,numpy.meshgrid已经用默认的indexing='xy'改变了行为,需要使用

np.vstack(np.meshgrid(x_p,y_p,z_p,indexing='ij')).reshape(3,-1).T

为了得到上一个索引变化很快的结果点,这不是我想要的。(只在1.7.0版本中提到过,meshgrid支持dimension>2,我没有检查)

EN

Stack Overflow用户

回答已采纳

发布于 2017-07-30 02:26:41

我通过一些试验和错误发现了这一点。

我认为ij v xy索引已经在meshgrid中存在了很久了(更新的是sparse参数)。它只会影响3个返回元素的顺序。

为了让x_p变化最快,我把它放在参数列表的最后,然后使用::-1来颠倒末尾的列顺序。

我在最后使用了stack将数组连接到一个新的轴上,所以我不需要转置。但是重塑和转置都是很便宜的(在时间上)。因此,它们可以以任何有效且可以理解的组合使用。

代码语言:javascript
复制
In [100]: np.stack(np.meshgrid(z_p, y_p, x_p, indexing='ij'),3).reshape(-1,3)[:,::-1]
Out[100]: 
array([[ 0. ,  5.5,  8.8],
       [ 1.1,  5.5,  8.8],
       [ 2.2,  5.5,  8.8],
       [ 3.3,  5.5,  8.8],
       [ 4.4,  5.5,  8.8],
       [ 0. ,  6.6,  8.8],
       ...
       [ 2.2,  7.7,  9.9],
       [ 3.3,  7.7,  9.9],
       [ 4.4,  7.7,  9.9]])
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45391740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档