gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 02:44:13 26 4
gpt4 key购买 nike

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

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))

我需要

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支持维度>2,我没有检查)

最佳答案

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

我认为 ij v xy 索引一直在 meshgrid 中(这是更新的 sparse 参数) )。它只影响 3 个返回元素的顺序。

为了让 x_p 变化最快,我将其放在参数列表的最后,然后使用 ::-1 反转末尾的列顺序。

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

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]])

关于python - 从三个 1D 数组创建 3D 坐标的 numpy 数组,第一个索引变化最快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45391740/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com