python - python中如何对二维数组进行排序

标签 python arrays sorting numpy tuples

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。例如,我打印了 rTool 的 5 个条目。根据第二列对它们进行排序,最后一行应该是第一行。我真的很难做到这一点,我怀疑这是因为我有元组而不是真正的三列数学矩阵。

[[ -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 中做这种事情违背了 Python 的一切。

完成后:

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

为了提高 numpy home 的重要性:

rTool = np.dot(Tool, R)

不仅更加干净,而且速度也快了几个数量级。

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

相关文章:

python - 根据其他列添加随机数列

python - 将字符串中的负数转换为 float (Python)?

mysql - Rails 连接 3 个表并仅提取名称作为数组

c - 如何删除一个元素来对数组进行排序

c# - 如何在 C# 中交换数组的两个值?

ios - 如何在 iOS 中对带符号的数组进行排序?

python - python中如何调用父类的方法?

javascript - 使用javascript更改图像的src

java - 如何为游戏制作不同对象的二维数组

python - 从 PST/PDT(Facebook 时间戳)转换为 UTC