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

时间:2010-07-14 16:59:09

标签: 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)]将返回第二个元素,然后是第一个元素。

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

[ a[i] for i in [1,3] ]

什么是蟒蛇的方式哦明智的? 谢谢!

2 个答案:

答案 0 :(得分:1)

我相信你想要numpy.take

newA = numpy.take(a, [1,3])

答案 1 :(得分:1)

NumPy允许您将列表用作索引:

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

请注意,这会制作副本而非视图。