gpt4 book ai didi

python - 如何拆分 numpy 数组,保留之前拆分的一些元素?

转载 作者:行者123 更新时间:2023-11-28 16:20:11 27 4
gpt4 key购买 nike

我有一个 numpy 数组,我希望将其拆分到某个维度。在拆分数组时,我需要(在每个元素的开头)添加前一个元素的尾部。例如,

让我的数组为 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]。让我的 split_size = 2pad_length = 1split_size 始终是数组长度的除数。我的结果拆分看起来像,

[随机, 0, 1], [1, 2, 3], [3, 4, 5], [5, 6, 7], [7, 8, 9]。我的拆分都以前一个元素的最后一个值作为前缀。

不用说,我的数组是多维的,我需要一种有效的矢量化方法来沿特定维度执行此操作。

在这里,我可以提供random的值。

最佳答案

听起来像是 as_strided 的工作。

as_strided 返回数组上的内存高效 View ,可用于检索数组上的移动窗口。关于它的 numpy 文档很少,但是有很多不错的博客文章,online slide decks , 和 SO issues你可以找到更详细的解释。

>>> import numpy as np
>>> from numpy.lib.stride_tricks import as_strided
>>> a = np.arange(10)
>>> split_size = 2
>>> pad_length = 1
>>> random = -9
>>> # prepend the desired constant value
>>> b = np.pad(a, (pad_length, 0), mode='constant', constant_values=random)
>>> # return a memory efficient view on the array
>>> as_strided(b,
... shape=(b.size//split_size, split_size + pad_length),
... strides=(b.strides[0]*split_size, b.strides[0]))
...
array([[-9, 0, 1],
[ 1, 2, 3],
[ 3, 4, 5],
[ 5, 6, 7],
[ 7, 8, 9]])

请注意,如果新步幅超出范围,您会看到相邻内存的内存内容出现在数组的末尾。

关于python - 如何拆分 numpy 数组,保留之前拆分的一些元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40905818/

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