繁体   English   中英

numpy.take数组元素的范围Python

[英]numpy.take range of array elements Python

我有一个整数数组。

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将数组的一部分存储在单独的数组中?

您可以直接切片列表。

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

您应该只使用一个切片来获取一系列索引,就不需要numpy.take ,它旨在用作精美索引的快捷方式。

data_extracted = data[1:4]

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM