2010-07-14 66 views
2

我是python的新手,想要做一些我通常在matlab/R中做的事情,但是無法從文檔中找到它。用類似於matlab/R的向量切片python數組元素

我想切片的陣列不是0:3,其包括元件0,1,2但作爲指標如0,3 。例如顯式矢量,說我有這種數據結構

a = [1, 2, 3, 4, 5] 

我想第二個和第三個元素 ,所以我認爲這樣的事情會工作

a[list(1,3)] 

但是,讓我這個錯誤

TypeError: list indices must be integers

這種情況對於大多數其他數據類型,以及如numpy的陣列

在MATLAB中,你甚至可以說[列表(2,1)]這將返回第二個,然後第一個元素。

我正在考慮的替代實現,但我認爲這對大型數組來說會很慢。至少它會在matlab中變得很慢。我主要使用numpy數組。

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

什麼是蟒蛇的方式哦明智的? 謝謝!

回答

1

NumPy允許您使用列表作爲指數:

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

注意,這使得副本,而不是一個視圖。