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

Matlab中var1(var2)索引操作解析及Python等效实现

Matlab索引操作var1(var2)的逻辑及Python等效实现

一、Matlab代码的核心逻辑

Matlab的数组采用1-based索引(从1开始计数),var1(var2)的作用非常直接:

  • 遍历var2中的每一个元素,将其作为下标,从var1中取出对应位置的元素
  • 所有取出的元素按var2的顺序排列,组成新的列向量var3

比如var2第一个元素是11,对应取var1的第11个元素(即184),和给出的var3首元素完全匹配。

二、Python的等效实现

Python的序列(列表、Numpy数组)默认是0-based索引(从0开始计数),因此需要把var2的每个索引值减1,再执行索引操作。以下是两种常用实现方式:

1. 使用Python原生列表

var1 = [139, 140, 142, 143, 144, 154, 156, 157, 158, 159, 184, 185, 186, 187, 188, 189, 190, 191, 192]
var2 = [11, 12, 12, 15, 10, 8, 7, 10, 9, 6, 10, 9, 8, 15, 5, 17, 15, 18, 14, 18, 16, 13, 13, 17, 19, 4, 15, 18, 1, 4, 2, 3, 3, 1, 9]
# 转换索引并取值
var3 = [var1[i-1] for i in var2]
# 若需要列向量格式,可转为嵌套列表
var3_col = [[x] for x in var3]

2. 使用Numpy(贴近Matlab向量操作风格)

Numpy支持批量索引操作,和Matlab的向量用法更接近,只需注意索引偏移:

import numpy as np

var1 = np.array([139, 140, 142, 143, 144, 154, 156, 157, 158, 159, 184, 185, 186, 187, 188, 189, 190, 191, 192])
var2 = np.array([11, 12, 12, 15, 10, 8, 7, 10, 9, 6, 10, 9, 8, 15, 5, 17, 15, 18, 14, 18, 16, 13, 13, 17, 19, 4, 15, 18, 1, 4, 2, 3, 3, 1, 9])
# 索引减1后批量取值,reshape转为列向量
var3 = var1[var2 - 1].reshape(-1, 1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 21:45:33