首页 > 解决方案 > 如何在连接和排序后显示初始值数组

问题描述

我有 3 个数组

a = np.array([1, 4, 5, 11, 46]),b = np.array([3, 2, 12, 14, 42])c = np.array([6, 23, 24, 45, 47])

我已合并这些数组并按升序对它们进行排序:

new = np.sort(np.concatenate([a, b, c]))这导致:

[ 1 2 3 4 5 6 11 12 14 23 24 42 45 46 47]

现在我正在寻找一种方法来显示从哪个初始数组(a,b,c)中选择每个值。例如,我得到['a', 'b', 'b', 'a', 'a', 'c', 'a', 'b', 'b', 'c', 'c', 'b', 'c', 'a', 'c']

我不确定我的方法是否正确,或者我应该为此目的使用字典吗?

标签: pythonnumpysortingdictionaryconcatenation

解决方案


您可能可以用更少的行来完成它,但为了可读性:

import numpy as np
a = np.array([1, 4, 5, 11, 46])
b = np.array([3, 2, 12, 14, 42])
c = np.array([6, 23, 24, 45, 47])
new = np.concatenate([a, b, c])
indices = np.concatenate([np.array(['a']*a.size),np.array(['b']*b.size),np.array(['c']*c.size)])

sorted = indices.sort()
result = indices[new.argsort()]

print(result)

这给出了以下输出:

['a' 'b' 'b' 'a' 'a' 'c' 'a' 'b' 'b' 'c' 'c' 'b' 'c' 'a' 'c']

推荐阅读