使用numpy数组的顺序模式

ldxq2e6h  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(86)

我想自动填充(3x3x3)numpy数组的零与模式看起来像这样,它从坐标(0.0, 0.0, 0.0)开始,然后顺序地并且以所示的顺序开始以顺序的方式将z增加3.5的量、将y增加6.5的量、将x增加6.5的量,结果将是3D空间中的网格节点

0.0 6.5 1.0
0.0 6.5 4.5
0.0 6.5 8.0
0.0 13.5 1.0
0.0 13.5 4.5
0.0 13.5 8.0
0.0 21.0 1.0
0.0 21.0 4.5
0.0 21.0 8.0
6.5 6.5 1.0
6.5 6.5 4.5
6.5 6.5 8.0
6.5 13.5 1.0
6.5 13.5 4.5
6.5 13.5 8.0
13.5 21.0 1.0
13.5 21.0 4.5
13.5 21.0 8.0
21.0 6.5 1.0
21.0 6.5 4.5
21.0 6.5 8.0
21.0 13.5 1.0
21.0 13.5 4.5
21.0 13.5 8.0
21.0 21.0 1.0
21.0 21.0 4.5
21.0 21.0 8.0

字符串

tp5buhyn

tp5buhyn1#

你可以使用np.indices来生成坐标数组。如果你的网格是均匀间隔的,你可以将它缩放和偏移成你想要的任何形状:

np.indices((4, 3, 3)).reshape(3, -1).T * [6.5, 7.5, 3.5] + [0, 6, 1]

字符串
如果你想要一个3D网格而不是一个27x3的数组,只需要删除.reshape(3, -1).T的位,并适当地更改比例和偏移。
如果你的网格是不规则的或非线性的,你可以提供组成它的数组,并将它们单独合并。np.meshgrid是完成这项工作的工具:

x = np.array([0.0, 6.5, 13.5, 21.0])
y = np.array([6.5, 13.5, 21.0])
z = np.linspace(1.0, 8.0, 3)

np.stack(np.meshgrid(x, y, z, indexing='ij'), -1).reshape(-1, 3)


同样,如果您想要3D网格,请删除有关.reshape(-1, 3)的位。

nhjlsmyf

nhjlsmyf2#

我想这就是你想要的。使用itertools.product来创建所有值的笛卡尔积。

>>> z = list(itertools.product((0.0,6.5,13.5,21.0),(6.5,13.5,21.0),(1,4.5,9.0)))
>>> z = np.array(z)
>>> z
array([[ 0. ,  6.5,  1. ],
       [ 0. ,  6.5,  4.5],
       [ 0. ,  6.5,  9. ],
       [ 0. , 13.5,  1. ],
       [ 0. , 13.5,  4.5],
       [ 0. , 13.5,  9. ],
       [ 0. , 21. ,  1. ],
       [ 0. , 21. ,  4.5],
       [ 0. , 21. ,  9. ],
       [ 6.5,  6.5,  1. ],
       [ 6.5,  6.5,  4.5],
       [ 6.5,  6.5,  9. ],
       [ 6.5, 13.5,  1. ],
       [ 6.5, 13.5,  4.5],
       [ 6.5, 13.5,  9. ],
       [ 6.5, 21. ,  1. ],
       [ 6.5, 21. ,  4.5],
       [ 6.5, 21. ,  9. ],
       [13.5,  6.5,  1. ],
       [13.5,  6.5,  4.5],
       [13.5,  6.5,  9. ],
       [13.5, 13.5,  1. ],
       [13.5, 13.5,  4.5],
       [13.5, 13.5,  9. ],
       [13.5, 21. ,  1. ],
       [13.5, 21. ,  4.5],
       [13.5, 21. ,  9. ],
       [21. ,  6.5,  1. ],
       [21. ,  6.5,  4.5],
       [21. ,  6.5,  9. ],
       [21. , 13.5,  1. ],
       [21. , 13.5,  4.5],
       [21. , 13.5,  9. ],
       [21. , 21. ,  1. ],
       [21. , 21. ,  4.5],
       [21. , 21. ,  9. ]])
>>>

字符串

相关问题