如何将依赖于索引的函数应用于numpy ndarray?

时间:2018-08-14 12:43:45

标签: numpy-ndarray

因此numpy ndarrays非常方便,因为您只需为任何一维函数f和任何ndarray A输入f(A),它将在元素上应用f。有人告诉我,这也是将函数应用于ndarray并避免for循环的一种非常有效的方法。有人告诉我,避免循环。

结果是,现在我需要应用一个函数f(A),它不仅是一维的,而且还需要了解每个元素的索引元组,以便为​​每个元素返回正确的值。有没有办法避免在这种情况下使用for循环或显式递归并继续在ndarray上使用直接函数应用程序?还是我选择不了?

1 个答案:

答案 0 :(得分:0)

使用numpy.meshgrid生成与数组中每个元素的索引元组相对应的坐标矩阵。然后让您的函数也依赖于这些坐标。

例如a是一个三维数组。

x, y, z = np.meshgrid(np.arange(a.shape[0]), np.arange(a.shape[1]), np.arange(a.shape[2]), indexing='ij')

提供三个数组x, y, z,它们在每个位置包含x,y和z坐标。然后,通过提供索引数组来扩展数组a上的函数。

f(a, x, y, z)

小心索引/方向的顺序。检查indexing的选项。