gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:13:22 25 4
gpt4 key购买 nike

我有一个任意长度的数组,我想选择它的 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。但是获取正确数量的元素(包括索引零和最后一个索引)至关重要。

最佳答案

要获取均匀分布的索引列表,请使用 np.linspace:

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

接下来,索引回arr得到相应的值:

arr[idx]

在转换为整数之前始终使用舍入。在内部,linspace 在提供 dtype 参数时调用 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')

关于python - 在数组中选择 N 个均匀间隔的元素,包括第一个和最后一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50685409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com