>>> forces
array([[[ 63.82078252, 0.63841691],
[ -62.45826693, 7.11946976],
[ -87.85946925, 15.1988562 ],
[-120.49417797, -16.31785819],
[ -81.36080338, 6.45074645]],
[[ 364.99959095, 4.92473888],
[ 236.5762723 , -7.22959548],
[ 69.55657789, 1.20164815],
[ -22.1684177 , 13.42611095],
[ -91.19739147, -16.15076634]]])
力[0]和力[1]都包含成对值的列表,例如63.82078252和0.63841691是一个数据点。在
但是这种结构是不可能的,因为两个力片的大小不同:(1,2)和(3,2)。在
>>> forces[:,:,0][forces[:,:,0] < 0] = np.nan
>>> forces
array([[[ 63.82078252, 0.63841691],
[ nan, 7.11946976],
[ nan, 15.1988562 ],
[ nan, -16.31785819],
[ nan, 6.45074645]],
[[ 364.99959095, 4.92473888],
[ 236.5762723 , -7.22959548],
[ 69.55657789, 1.20164815],
[ nan, 13.42611095],
[ nan, -16.15076634]]])
然后使用isnan
删除相关条目:
>>> forces = forces[~np.isnan(forces).any(axis=2)]
>>> forces
array([[ 63.82078252, 0.63841691],
[ 364.99959095, 4.92473888],
[ 236.5762723 , -7.22959548],
[ 69.55657789, 1.20164815]])
所以这些值是正确的,但是现在它们被集中到一个二维数组中。在
另外,任何关于更优雅地完成任务的建议都将不胜感激!在
很简单
阅读更多信息:http://scipy-lectures.github.io/intro/numpy/array_object.html#fancy-indexing
相关问题 更多 >
编程相关推荐