选择数组中N个均匀间隔的元素,包括第一个和最后一个

JDS:

我有一个任意长度的数组,我想选择其中的N个元素,它们之间的间隔均匀(大约N可能是偶数,数组长度可能是素数,等等),其中包括第一个arr[0]元素和最后一个arr[len-1]元素。

例:

>>> arr = np.arange(17)
>>> arr
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16])

然后,我想制作一个类似于以下的函数,以numElems在数组内均匀地抓取空间,该数组必须包含第一个和最后一个元素:

GetSpacedElements(numElems = 4)
>>> returns 0, 5, 11, 16

这有意义吗?

我已经尝试过arr[0:len:numElems](即使用数组start:stop:skip表示法)和一些细微的变化,但是我在这里找不到想要的东西:

>>> arr[0:len:numElems]
array([ 0,  4,  8, 12, 16])

要么

>>> arr[0:len:numElems+1]
array([ 0,  5, 10, 15])

我并不在乎中间元素是什么,只要它们均匀间隔开,就可以说索引为1。但是获取正确数量的元素(包括索引零和最后一个索引)至关重要。

希望有人可以帮助我找到快速的单班轮,谢谢!

cs95:

要获取等间距索引的列表,请使用np.linspace

idx = np.round(np.linspace(0, len(arr) - 1, numElems)).astype(int)

接下来,索引回去arr以获取相应的值:

arr[idx]

在强制转换为整数之前,请始终使用舍入。在内部,在提供dtype参数时linspace调用astype因此,此方法等效于:

# this simply truncates the non-integer part
idx = np.linspace(0, len(array) - 1, numElems).astype(int)
idx = np.linspace(0, len(arr) - 1, numElems, dtype='int')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

R 选择向量中 N 个均匀分布的元素,包括第一个和最后一个

删除数组中的第一个和最后一个元素

NumPy数组中的第一个和最后一个元素

列表中连续对的和,包括最后一个元素与第一个元素的和

保留数组的第一个索引元素和最后一个索引元素

如何通过XPath选择第一个和最后一个元素?

查找大于阈值的NumPy数组的第一个和最后一个元素

减少数组到第一个和最后一个元素的元组?

交换数组的所有元素,除了第一个和最后一个

排除数组的第一个和最后一个元素

数组中除第一个和最后一个元素外的其他元素

如何检查数组c ++中的第一个元素和最后一个元素

选择要隐藏的元素(如果是数组中的第一个或最后一个)

新行中第一个和最后一个内联块元素的选择器

如何识别对象数组中链的第一个和最后一个元素

以ES6方式获取数组中的第一个和最后一个元素

PHP:获取数组中的第一个和最后一个元素条目及其键

如何选择<tr>中的第一个和最后一个<td>?

R:识别重复组中的第一个和最后一个元素

ul列表中的第一个和最后一个VISIBLE元素

删除行中第一个和最后一个元素的填充

从解析的数组中获取第一个和最后一个日期

在Fortran数组中查找第一个和最后一个正值

返回数组中的第一个和最后一个值

忽略数组中的第一个和最后一个数字

将数组中的第一个和最后一个值分组(连续的值与第一个和最后一个元素分组)

查找数组中的第一个、最后一个和中间值。返回最大的一个

CSS选择器在所有框(第一个和最后一个)中添加一个before伪元素?

选择 NumPy 数组范围,包括最后一个元素