numpy.take范围的数组元素Python

时间:2017-01-31 16:41:46

标签: python arrays numpy

我有一个整数数组。

data = [10,20,30,40,50,60,70,80,90,100]

我想从数组中提取一系列整数并得到一个更小的数组。

data_extracted = [20,30,40]

我尝试了numpy.take

data = [10,20,30,40,50,60,70,80,90,100]
start = 1    # index of starting data entry (20)
end = 3      # index of ending data entry (40)
data_extracted = np.take(data,[start:end])

我收到指向numpy.take中的:的语法错误。

有没有更好的方法使用numpy.take将数组的一部分存储在单独的数组中?

3 个答案:

答案 0 :(得分:3)

您可以直接对列表进行切片。

import numpy as np
data = [10,20,30,40,50,60,70,80,90,100]
data_extracted = np.array(data[1:4])

此外,您不需要使用numpy.array,您可以将数据存储在另一个列表中:

data_extracted = data[1:4]

如果你想使用numpy.take,你必须将所需索引的列表作为第二个参数传递给它:

import numpy as np
data = [10,20,30,40,50,60,70,80,90,100]
data_extracted = np.take(data, [1, 2, 3])

我认为此应用程序不需要numpy.take

答案 1 :(得分:0)

你应该只使用一个切片来获得一系列索引,不需要numpy.take,这是一个花式索引的快捷方式。

data_extracted = data[1:4]

答案 2 :(得分:0)

正如其他人所提到的,在这种情况下,您可以使用花式索引。但是,如果您需要使用np.take,例如切片的轴是可变的,您可以尝试:

axis=0
data.take(range(1,4), axis=axis)

注意:这可能比以下速度慢: data_extracted = data[1:4]