我想知道是否有一种方法可以设置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
.
因此,如果有人能帮助我解决这个挑战,我会非常高兴。提前致谢
温暖的问候,
埃尔韦