使用类似于matlab/R的向量切片python数组元素

使用类似于matlab/R的向量切片python数组元素,python,Python,我是python新手,一直想做一些我通常在matlab/R中做的事情,但从文档中看不出来 我不想将数组切片为0:3,其中包含元素0,1,2,而是作为索引的显式向量,例如0,3 例如,假设我有这个数据结构 a = [1, 2, 3, 4, 5] 我想要第二和第三个元素 所以我觉得这样做会管用的 a[list(1,3)] 但这给了我这个错误 TypeError:列表索引必须为 整数 大多数其他数据类型(如numpy数组)也会发生这种情况 在matlab中,您甚至可以说一个[list(2,1)],

我是python新手,一直想做一些我通常在matlab/R中做的事情,但从文档中看不出来

我不想将数组切片为0:3,其中包含元素0,1,2,而是作为索引的显式向量,例如0,3 例如,假设我有这个数据结构

a = [1, 2, 3, 4, 5]
我想要第二和第三个元素 所以我觉得这样做会管用的

a[list(1,3)]
但这给了我这个错误

TypeError:列表索引必须为 整数

大多数其他数据类型(如numpy数组)也会发生这种情况

在matlab中,您甚至可以说一个[list(2,1)],它将返回第二个元素,然后返回第一个元素

我正在考虑另一种实现方式,但我认为对于大型阵列来说,这会很慢。至少在matlab中它会非常慢。我主要使用numpy数组

[ a[i] for i in [1,3] ]
python的方式是什么?哦,聪明的人? 谢谢

我相信你想要:

允许您将列表用作索引:

import numpy
a = numpy.array([1, 2, 3, 4, 5])
a[[1, 3]]
请注意,这将创建一个副本而不是视图

import numpy
a = numpy.array([1, 2, 3, 4, 5])
a[[1, 3]]