同时对一维数组和二维数组(按列)排序

卡尔提克(Karthik Venkatesh)

我有两个数组,一个名为Amplitudes的形状为(99,)的一维数组,一个名为Modes的2D形状为(55714,99)的数组。我想对这两个数组进行排序,以使Modes数组的列根据Amplitudes进行排列。这样做实际上是为了找到主导模式。

Amplitudes_absolute是我的1D数组,而Modes_st是我的2D数组。两者均未分类。

Amplitudes_absolute.shape给(99,)Modes_st.shape给我(55714,99)

我想将排序模式的形状保留为(55714,99),但要根据Amplitudes_absolute的升序对列进行排序。

我试过了:

Amplitudes_absolute_sorted, Modes_sorted = [list(x) for x in     zip(*sorted(zip(Amplitudes_absolute, Modes_st), key=itemgetter(0)))]

Modes_sorted = np.squeeze(np.array(Modes_sorted)) #To obtain an array

Amplitudes_absolute_sorted = np.sort(Amplitudes_absolute)

p = Amplitudes_absolute_sorted.argsort()

Modes_sorted = Modes_st[p]

两者都给了我错误的形状,就像在Modes_sorted.shape中给出了(99,99)而不是(55714,99)。

有没有办法进行这种分类?

用户名

你很亲近 第一种方法可以通过转置modes数组来解决:

from operator import itemgetter
import numpy as np

_, modes_sorted = zip(*sorted(zip(amplitudes, modes.T), key=itemgetter(0)))
modes_sorted = np.array(modes_sorted)

这是因为当您迭代2D Numpy数组时,会得到行,但需要列。您只有原始代码的前99行,因为zip当收到的迭代器之一用完时会停止。

当然,使用Numpy更容易:

sorter = amplitudes.argsort()
modes_sorted = modes[:,sorter]

请注意:第一个索引的,因此我们正在重新排列列而不是行。另外,无需先排序amplitudes,您可以直接使用argsort

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

按行排序二维数组

来自分类Dev

比较二维数组和一维数组

来自分类Dev

比较二维数组和一维数组的值

来自分类Dev

一维数组 -> 二维数组

来自分类Dev

Python按列将一维数组添加到二维数组

来自分类Dev

Python:按数组长度对二维数组排序?

来自分类Dev

一维和二维数组之间的选择

来自分类Dev

Python - 添加一维数组作为二维列

来自分类Dev

JavaScript - 按数字对二维数组进行排序

来自分类Dev

二维数组 - 按行对数字进行排序

来自分类Dev

使用快速排序按列对二维数组进行排序

来自分类Dev

如何在Perl中按列对二维数组进行排序,而忽略某些列呢?

来自分类Dev

字符串列表时如何按第一列将二维数组排序为数字?(Python)

来自分类Dev

如何按列对二维整数数组进行排序

来自分类Dev

根据列对二维int数组进行排序的过程

来自分类Dev

使用列索引进行二维数组排序

来自分类Dev

我如何排序二维数组?

来自分类Dev

根据值对二维数组排序

来自分类Dev

气泡排序二维数组

来自分类Dev

快速排序二维数组

来自分类Dev

二维数组中的深度排序

来自分类Dev

对二维数组行进行排序

来自分类Dev

二维数组排序,空白乱序

来自分类Dev

冒泡排序二维数组

来自分类Dev

合并排序二维数组

来自分类Dev

如何对二维数组进行排序?

来自分类Dev

Php natsort 按二维数组

来自分类Dev

按行排列二维数组

来自分类Dev

数组差异,将一维数组与二维二维数组进行比较