python - 如何在连接和排序后显示初始值数组
问题描述
我有 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']
我不确定我的方法是否正确,或者我应该为此目的使用字典吗?
解决方案
您可能可以用更少的行来完成它,但为了可读性:
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']
推荐阅读
- android - 反应本机自定义推送对象通知不起作用?
- python - 输入 0 与层 lstm_24 不兼容:预期 ndim=3,发现 ndim=2
- python - 从 QLineEdit 读取文本作为 Qmenu 选项的子菜单
- javascript - 使用传单,同时绘制大量多边形和标记
- c# - 使用编组时来自字节数组的图像创建错误图像
- forms - 为什么 Mapsui.UI.Forms 不存在?
- html - 我想为此在 html 电子邮件中附加图像,我使用的是 base64 编码图像,但问题是图像未显示在 Outlook 应用程序中
- reactjs - 使用 redux-saga 重定向反应路由器
- c# - 如何将 IEnumerable 转换为一个对象
- jasmine - 总是有一些测试用例得到 jasmine.DEFAULT_TIMEOUT_INTERVAL