0

我想知道是否有一种方法可以设置linspace具有多个num 参数的 NumPy 函数,以便我可以创建具有不同间隔的均匀间隔值序列,而无需任何 for 循环操作。

为了进一步说明我的问题,我有以下 np.array ,我想细分 3 个段,由它们在 x、y、z 轴上的 2 个顶点表示:

*************************
3D SEGMENTS TO DISCRETIZE
*************************
SegmentToDiscretize = np.array([[[150.149, 167.483,   4.2  ],[160.149, 167.483,   4.2  ]],
                                [[148.594, 163.634,  25.8  ],[180.547, 170.667,  25.8  ]],
                                [[180.547, 170.667,  25.8  ],[200.547, 190.667,  25.8  ]]])

以及专门用于在每对顶点之间添加等距点的 folling 函数:

******************************
EQUIDISTANT POINTS COMPUTATION
******************************
nbsubdiv = 10

addedpoint = np.linspace(SegmentToDiscretize[:,0],SegmentToDiscretize[:,1],nbsubdiv, dtype = np.float)

多亏了参数nbsubdiv,我可以指定我想要多少个细分。
但我想为我的 SegmentToDiscretize 中包含的每个段/行指定 3 个不同的细分值np.array

[[[150.149, 167.483,   4.2  ],[160.149, 167.483,   4.2  ]],   <-- nbsubdiv = 4
[[148.594, 163.634,  25.8  ],[180.547, 170.667,  25.8  ]],    <-- nbsubdiv = 30
[[180.547, 170.667,  25.8  ],[200.547, 190.667,  25.8  ]]]    <-- nbsubdiv = 10

我试图将我的nbsubdiv参数转换为list但没有成功......

nbsubdiv = [4,30,10]

addedpoint = np.linspace(SegmentToDiscretize[:,0],SegmentToDiscretize[:,1],nbsubdiv[0], dtype = np.float)

使用上面的代码,我得到:

[[148.594      163.634        4.2       ]
 [150.149      165.97833333   4.2       ]
 [153.48233333 167.483        4.2       ]
 [156.81566667 167.483        4.2       ]
 [159.245      167.483       25.8       ]
 [160.149      167.483       25.8       ]
 [169.896      168.32266667  25.8       ]
 [180.547      170.667       25.8       ]
 [180.547      170.667       25.8       ]
 [187.21366667 177.33366667  25.8       ]
 [193.88033333 184.00033333  25.8       ]
 [200.547      190.667       25.8       ]]

这是正常的,因为nbsubdiv[0]需要列表中的第一个元素。但是我没有成功找到一种方法来递归地使用这个列表中的每个值,而没有for loop.

因此,如果有人能帮助我解决这个挑战,我会非常高兴。提前致谢

温暖的问候,

埃尔韦

4

0 回答 0