python - 重组 3d numpy 数组
问题描述
我已经尝试并搜索了几天,我已经接近但需要您的帮助。
我在 python 中有一个 3d 数组,
shape(files)
>> (31,2049,2)
它对应于 31 个输入文件,其中包含 2 列数据、2048 行和一个标题。
我想根据每个文件中的标头(一个数字)对这个数组进行排序。
我试图遵循NumPy:sorting 3D array but keep 2nd dimension assignment to first,但我非常困惑。
首先,我尝试为 argsort 设置标题,我想我可以做到
sortval=files[:][0][0]
但这不起作用..
然后我只是做了一个 for 循环来迭代并获取我的标题
for i in xrange(shape(files)[0]:
sortval.append([i][0][0])
然后
sortedIdx = np.argsort(sortval)
这行得通,但是我不明白最后一行发生了什么..
files = files[np.arange(len(deck))[:,np.newaxis],sortedIdx]
帮助将不胜感激。
解决方案
另一种方法是使用np.take
header = a[:,0,0]
sorted = np.take(a, np.argsort(header), axis=0)
推荐阅读
- scala - 有没有办法将结束列添加到透视数据框?
- html - 如何通过 vba 正确地从网页复制和粘贴信息(图表、表格等)到 excel
- sql - SQL:需要“全部”解释
- android - 如何在 PreferenceFragmentCompat 中使用 SummaryProvider 更新首选项?
- python - 使用乳胶输出编程功能
- nix - 在 stdenv.mkderivation 上评估构建输入时,首先调用哪个输入
- python - for 循环的顺序会影响结果
- c - 如何将八进制转换为十六进制?
- typescript - 我可以将 InterleavedBufferAttribute 用于索引吗?
- javascript - XMLHttpRequest 事件侦听器不在 Edge 上工作