gpt4 book ai didi

python - 减少 ndarray 的第一维 - 保留第一个和最后一个元素

转载 作者:太空宇宙 更新时间:2023-11-04 02:50:14 28 4
gpt4 key购买 nike

假设我有一个要减少的 3D 矩阵。我只想将第一个维度减少到大约 10 个元素(最好是 10 个,但不是必需的)。我为此使用了这段代码:

import numpy
m = numpy.random.rand(37,2,100)
new_m = m[0:-1:int(m.shape[0]/10)]
# new_m.shape = (12, 2, 100)

我的问题如下:我希望第一个维度的第一个和最后一个元素与我的原始矩阵相同。但是对于我当前的代码,这个条件不适用于最后一个元素:

new_m[0,:,:2], new_m[-1,:,:2]
#[[ 0.06081972 0.91343839] [ 0.89614534 0.33846807]]
#[[ 0.37289341 0.62491196] [ 0.30603305 0.1442681 ]]
m[0,:,:2], m[-1,:,:2]
#[[ 0.06081972 0.91343839] [ 0.89614534 0.33846807]]
#[[ 0.28143018 0.10626664] [ 0.30334235 0.29616713]]

如您所见,new_m[-1] 不等于 m[-1],我希望它们是。

我的尝试/想法:

  • 我试图将 m[-1] 附加到 new_m 但是我得到了这个错误:

    AttributeError: 'numpy.ndarray' object has no attribute 'append'

  • 我也考虑过执行 new_m[-1] = m[-1],但我希望步骤之间的空间成比例(即步骤分开得很好)。

有什么想法、建议吗?

最佳答案

由于您使用的是 numpy,因此您可以利用花哨的索引。我们还将使用 linespace,它会在一个范围内生成均匀分布的点,包括端点。这些参数类似于您传递给 range 或您的索引方法的内容。

indexes = np.linspace(0, len(m) - 1, 10, dtype=int)
new_m = m[indexes]

关于python - 减少 ndarray 的第一维 - 保留第一个和最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44108861/

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