因此numpy ndarrays非常方便,因为您只需为任何一维函数f和任何ndarray A输入f(A),它将在元素上应用f。有人告诉我,这也是将函数应用于ndarray并避免for循环的一种非常有效的方法。有人告诉我,避免循环。
结果是,现在我需要应用一个函数f(A),它不仅是一维的,而且还需要了解每个元素的索引元组,以便为每个元素返回正确的值。有没有办法避免在这种情况下使用for循环或显式递归并继续在ndarray上使用直接函数应用程序?还是我选择不了?
答案 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
的选项。