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列和许多行(超过10,000个)组成的矩阵,其中每一行代表该点的3个坐标。我要做的下一步是这样的向量转换:(仅当您真的想了解我在做什么时,这才具有次要的重要性

rTool = numpy.zeros_like(Tool)
for rt in xrange((len(xTool) - 1)):
  rTool[rt][0] = (Tool[rt][0] * cos(angle)) - (Tool[rt][1] * sin(angle))
  rTool[rt][1] = (Tool[rt][0] * sin(angle)) + (Tool[rt][1] * cos(angle))
  rTool[rt][2] = Tool[rt][2]


最后,我想做的是根据第二列([1])订购rTool。例如,我打印了5个rTool条目。通过根据第二列对它们进行排序,最后一行应该是第一行。我确实很难做到这一点,我怀疑这是因为我有元组而不是真正的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]]


请不要犹豫,要求澄清,希望您能为我提供帮助!谢谢。

最佳答案

首先,学习numpy。在普通的python中做这种事情违反了所有pythonic。

完成此操作后:

sorted_rtool = rTool[np.argsort(rTool[:,1])]


推动numpy主页的重要性:

rTool = np.dot(Tool, R)


不仅干净很多,而且速度也快几个数量级。

关于python - 如何在python中对二维数组进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25992393/

10-11 21:05