You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Numpy中根据向量重排规则调整二维矩阵轴顺序

实现方法

你可以通过两种方式完成矩阵同步重排,均能匹配需求:

通用重排方法(适用于任意ts重排逻辑)

只要你得到了重排后的tss,只需要生成新序列对应原序列的列索引,再用numpy高级索引重排矩阵的列即可,示例代码如下:

import numpy as np

a = np.array([
            [1, 2, 3], 
            [4, 5, 6], 
            [7, 8, 9]
            ])
ts = np.array([100, 200, 300])
tss = np.array([200, 300, 100])

# 生成新时间序列对应原序列的列索引
col_idx = [np.where(ts == t)[0][0] for t in tss]
# 若原ts是有序数组,可以用向量化写法提升效率:col_idx = np.searchsorted(ts, tss)

# 按索引重排矩阵的列
aa = a[:, col_idx]
print(aa)
# 输出结果:
# [[2 3 1]
#  [5 6 4]
#  [8 9 7]]

FFT场景专用方法

如果你确定重排逻辑就是np.fft.fftshift对应的顺序,可以直接调用numpy的fftshift方法指定操作列轴,代码更简洁:

aa = np.fft.fftshift(a, axes=1)

输出结果和通用方法完全一致。

相关知识点
  • numpy高级索引:整数数组索引可以沿指定轴重排元素,二维数组中arr[:, 索引列表]会按照索引列表的顺序重排所有行的列元素,不会改变行顺序
  • numpy轴规则:二维数组axis=0对应行维度,axis=1对应列维度,指定轴操作可以只修改目标维度的顺序,不影响其他维度的结构
  • FFT配套操作:np.fft.fftfreq用于生成FFT计算对应的频率坐标,np.fft.fftshift用于将FFT输出的零频分量移动到数组中心,通过axes参数可以指定仅对列维度生效,匹配时间轴重排的需求。

内容的提问来源于stack exchange,提问作者velenos14

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 19:45:03