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

Matlab转Python:如何基于经度数组对三维数组第一维度排序?

将Matlab经度转换与排序逻辑迁移到Python

对应Matlab代码的Python实现步骤

你的Matlab代码完成了三个核心操作:翻转数组维度、将经度从[-180,180]转换为[0,360]、按排序后的经度重新排列数组。以下是对应的Python实现:

  1. 翻转数组(对应Matlab flip(SSS_ships,2))
    Matlab的flip(A,2)是翻转数组的第二个维度,在Python中用np.flip()指定axis=1(Python维度从0开始,Matlab的维度2对应Python的axis1):

    SSS_ships = np.flip(SSS_ships, axis=1)
    
  2. 经度转换为[0,360]范围
    你当前的np.where方法可行,不过用np.mod()更简洁,和Matlab的wrapTo360效果完全一致:

    SSS_lon = np.mod(SSS_lon, 360)
    
  3. 按经度排序并重新排列数组(对应Matlab的sort与索引操作)
    Python中用np.argsort()获取排序后的索引(对应Matlabsort返回的第二个输出ix),然后用该索引重新索引三维数组的经度维度:

    # 获取经度排序后的索引
    ix = np.argsort(SSS_lon)
    # 按索引重新排列三维数组的经度维度
    SSS_sss = SSS_ships[ix, :, :]
    

完整代码示例

把上述步骤整合起来:

import numpy as np

# 1. 翻转数组的第二个维度(对应Matlab flip(SSS_ships,2))
SSS_ships = np.flip(SSS_ships, axis=1)

# 2. 将经度转换为[0, 360]范围
SSS_lon = np.mod(SSS_lon, 360)

# 3. 对经度排序并重新排列数组
ix = np.argsort(SSS_lon)
SSS_sss = SSS_ships[ix, :, :]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 21:43:20