Tool = [[0 for x in xrange(3)] for y in xrange(len(xTool)-1)]
for l in xrange((len(xTool) - 1)):
Tool[l][0] = yTool[l]; Tool[l][1] = xTool[l]; Tool[l][2] = zTool[l]
我从点坐标开始,它在3个列表(xTool、yTool、zTool)中,分别表示我所有点的x、y和z坐标。在
这里的目标是创建一个由3列和多行(超过10000行)组成的矩阵,其中每行代表点的3个坐标。下一步我要做的是这样的向量转换:(只有当你真的想理解我在做什么的时候,这才是次要的
^{pr2}$最后,我要做的是对我的第二个专栏([1])排序rTool。例如,我打印了5个rTool条目。根据第2列对它们进行排序,最后一行应该是第一行。我真的很难做到这一点,我怀疑这是因为我有元组,而不是一个真正的3列数学矩阵。在
[[ -584.89837646 -3648.6472168 402.177948 ]
[ -542.8659668 -3663.34545898 405.76959229]
[ -500.831604 -3678.04785156 409.32122803]
[ -458.79336548 -3692.75854492 412.7930603 ]
[ -416.74984741 -3637.48022461 416.15090942]]
请不要犹豫要求澄清,我希望你能帮助我!谢谢。在
首先也是最重要的一点是,学习纽姆。用纯python做这种事情违背了python的一切。在
一旦你做到了:
要让numpy回家的重要性:
^{pr2}$不仅干净了很多,而且速度也快了一个数量级。在
您可以使用'sort'或'sorted'的'key'参数,请参见https://wiki.python.org/moin/HowTo/Sorting#Key_Functions
在您的情况下:
或者
^{pr2}$您正在寻找
list.sort()
的key
关键字(或内置的sorted()
),请看Key Functions
部分{a1}。在通常人们只使用lambda函数作为sort键,因为它很简洁,而且通常不会多次使用sort函数。它只是一个函数,它返回一个对象
key
,列表中的每个元素都在这个对象上排序。在所以你可以:
或者:
^{pr2}$在这两种情况下,都可以使用
rTool = sorted(rTool, key=...)
,区别在于list.sort()
执行就地排序,如果不需要原始数组,则效率更高。在key
函数可以是您想要的任何东西,前提是它返回其他可以排序的对象,因此如果您的点是具有x, y, z
属性的对象,那么您可以执行rTool.sort(key x: x.y)
相关问题 更多 >
编程相关推荐