我如何仅对在索引中满足条件的2D numpy数组元素执行操作,而无需在Python中进行迭代?

问题描述 投票:0回答:1

我正在尝试实现一种求解算法,如果数组元素为负,则将使用一个方程,如果数组元素为正,则将使用另一个方程。这是我试图区分两种情况的代码:

    Xn = X.copy()
    X[X[2:-2, 2:-2]>=0] = #algorithm A, calls several upstream values from Xn
    X[X[2:-2, 2:-2]<0] = #algorithm B, calls several downstream values from Xn

我只想将值分配给X [2:-2,2:-2]。 X的形状为(21,21),而X [2:-2,2:-2]的形状为(17,17)。我在上面的代码中收到此错误:

IndexError:布尔索引与维度0上的索引数组不匹配;维度为21,但相应的布尔维度为17

如何在不迭代每个元素的情况下执行此操作?

python arrays indexing boolean numpy-ndarray
1个回答
0
投票

使用向量化。那将解决您的所有问题。

© www.soinside.com 2019 - 2024. All rights reserved.