Python 在多个NumPy数组上排序

Python 在多个NumPy数组上排序,python,numpy,Python,Numpy,我正在创建一个包含股票收益的二维numpy数组。我想每两天对收益进行一次求和,如果求和在前两天,我会将类似形状数组中的每个元素都设置为True 例如,下面的收益是四种不同股票的每日收益 返回=np.array([ [0,0,4,8], [7,5,4,1], [10,5,7,6], [7, 5, 4, 2]]) 前两天,第2列和第3列(使用基于0的索引)的总和最高。对于第二组两天,第0列和第2列的总和最高。我想要的输出数组是 bools=np.array([ [假,假,真,真], [假,假,

我正在创建一个包含股票收益的二维numpy数组。我想每两天对收益进行一次求和,如果求和在前两天,我会将类似形状数组中的每个元素都设置为True

例如,下面的收益是四种不同股票的每日收益


返回=np.array([
[0,0,4,8],
[7,5,4,1],
[10,5,7,6],
[7, 5, 4, 2]])

前两天,第2列和第3列(使用基于0的索引)的总和最高。对于第二组两天,第0列和第2列的总和最高。我想要的输出数组是


bools=np.array([
[假,假,真,真],
[假,假,真,真],
[对,错,对,错],
[对,错,对,错]]

实现这一目标的好方法是什么

如果两天的总和有联系,我想使用另一个形状类似的numpy数组作为分界线

例如,如果


返回=np.array([
[0,9,4,8],
[7,5,4,0],
[10,5,7,6],
[7, 5, 4, 2]])

对于第一组两天,第2列和第3列并列第二高。我想通过最后一行中绑定列的最大值来确定tiebreaker,以便第2列和第3列之间的tiebreak查看tiebreak[1][2]与tiebreak[1][3](4 v 5),最终输出为bools2


tiebreaks=np.array([
[0,0,1,1],
[2,3,4,5],
[0,5,7,6],
[-7, 5, -4, 2]])


bools2=np.array([
[假,真,假,真],
[假,真,假,真],
[对,错,对,错],
[对,错,对,错]]

感谢您的帮助。

您可以使用
prices
作为主键,使用
names
作为辅助键来获取排序数组的索引。使用这些索引应用高级索引将生成已排序的数组:

col_indices = numpy.lexsort((names, prices))
row_indices = numpy.arange(len(names))[:, None]
print(prices[row_indices, col_indices])
print(names[row_indices, col_indices])

(请注意,在您的示例中,
名称
价格
没有兼容的形状。)

在您的示例中,事物似乎已经根据您的条件进行了排序,
名称
数组显然有一个不必要的维度。如果你能提供一个更现实的例子和一个期望结果的例子,这将是很有帮助的。你的编辑使这成为一个完全不同的问题。请回滚编辑并提出新问题。