gpt4 book ai didi

python - 使用 numpy block (切片)表示法动态获取子矩阵

转载 作者:太空宇宙 更新时间:2023-11-04 00:03:43 26 4
gpt4 key购买 nike

我想要一个 n 维矩阵的子矩阵。事先不知道矩阵的维数。所以给出:

import random

a = [10 for _ in range(0, random.randint(0,10))]
M = np.full(a, True)
# Now get the submatrix dynamically with block notation
# so something like:
# str = ["1:5" for _ in range(0, len(a))].join(",")
# N = eval("M[ " + str + "]")

我想知道一个很好的方法来明智地做这个符号并且速度也明智。

(Numpy extract submatrix 中提供的其他答案并未直接解决问题,因为接受的答案使用 .ix_ 不接受切片。)

最佳答案

我们可以使用np.s_在引擎盖下使用 slice 符号 -

M[[np.s_[1:5]]*M.ndim]

这给了我们一个FutureWarning:

FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated

为了避免它,我们需要用 tuple() 包裹起来,就像这样 -

M[tuple([np.s_[1:5]]*M.ndim)]

使用明确的 slice 表示法,它将是 -

M[tuple([slice(1,5)]*M.ndim)]

关于python - 使用 numpy block (切片)表示法动态获取子矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54926975/

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