我确实找到了一个答案here,但我不断收到错误消息:“数组的索引过多”。该错误将出现在答案sidx = A[:,0].argsort()
的第一行,我不确定该如何解决。
我不确定这是否有用,但是两个数组的第一列都是整数。其他一切都是花车。如果对于该错误有某种解决方案,或者对于我所遇到的问题有另一种解决方案,那么将不胜感激!
这也是两个数组的外观。
In: arrayA
Out: array([(8846, 73.00, 57.56, 1.),
(4814, 347.21, 56.61, 0.),
(2779, 72.14 , 57.34, 0.),
(1439, 30.24, 64.81, 1.),
(3677, 85.50, 31.85, 1.),
(9777, 199.95, 50.46, 1.)])
In: arrayB
Out: array([(2779, 72.14 , 57.34, 17.165, 0.005, 1.329, 19.745, 0.031),
(9777, 199.95, 50.46, 15.19, 0.002, 0.019, 19.193, 0.023),
(8846, 73.00, 57.56, 14.21, 0.002, 1.754, 16.918, 0.007),
(3677, 85.50, 31.85, 20.1, 0.073, 2.394, 23.976, 1.091, 4.441)])
我希望最终产品是数组A的排序版本,以便A的每个索引与数组B的每个索引匹配
In: arrayA_sorted
Out: array([(2779, 72.14 , 57.34, 0.),
(9777, 199.95, 50.46, 1.),
(8846, 73.00, 57.56, 1.),
(3677, 85.50, 31.85, 1.),
(4814, 347.21, 56.61, 0.),
(1439, 30.24, 64.81, 1.)])
在这里,arrayA_sorted的索引0到3的前三列与数组B的前三列匹配。多余的两行没有被触及,因为它们无法匹配任何内容,并留在了数组的底部。数组。