首页 > 解决方案 > 重组 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]

帮助将不胜感激。

标签: pythonnumpymatplotlib

解决方案


另一种方法是使用np.take

header = a[:,0,0]
sorted = np.take(a, np.argsort(header), axis=0)

推荐阅读