将函数应用于某些索引上的 Numpy 数组

Apply function to Numpy array on certain indexes

提问人:Rararat 提问时间:11/7/2023 最后编辑:Rararat 更新时间:11/7/2023 访问量:52

问:

我有一个任意大小的 3D numpy 数组和一个函数,该函数接受一个向量并返回相同的向量,但对每个元素进行平方,即 .fun()[x1,x2,...,xn][x1**2,x2**2,...,xn**2]

我想将该函数应用于具有满足特定条件的索引的元素。例如,我想将我的函数应用于索引为 form 等的每个元素(两个坐标都可以被 2 整除的索引)。fun()[0,0],[0,2],...,[2,0],[2,2],...

我知道使用诸如检查值是否能被 2 整除之类的东西,但我不知道如何使用条件来检查索引。我想过使用apply_over_axis并在函数内部检查坐标是否满足要求,但我认为这可能效率太低了。有没有快速的方法可以做到这一点?array[array%2 == 0]

python 数组 numpy

评论

2赞 hpaulj 11/7/2023
像这样的东西 ?如果是 3d,则无需更改。x[::2, ::2]x
0赞 Rararat 11/7/2023
@hpaulj 所以,围绕 ?是否需要矢量化?x[::2,::2] = fun(x[::2,::2])fun()
1赞 pho 11/7/2023
^ 是的,但不需要向量化,只要它返回一个形状相同的数组funx[::2, ::2]
1赞 hpaulj 11/7/2023
你是什么意思?它可以在 2d 数组中使用吗?或 3d 数组。我们无法帮助解决未知的黑匣子功能。我所建议的只是如何选择 .像对待任何其他 2D 或 3D 数组一样对待该视图。vectorizedx
1赞 hpaulj 11/7/2023
x1 = x[::2,::2]**2

答: 暂无答案