【发布时间】:2017-01-11 12:57:46
【问题描述】:
我想将任意函数应用于 3d-ndarray 作为元素,它使用(3 维)数组作为其参数并返回标量。因此,我们应该得到 2d-Matrix。
例如)伪代码
A = [[[1,2,3],[4,5,6]],
[[7,8,9],[10,11,12]]]
A.apply_3d_array(sum) ## or apply_3d_array(A,sum) is Okey.
>> [[6,15],[24,33]]
我知道循环使用 ndarray.shape 函数是可能的,但是正如官方文档所说,直接索引访问效率低下。 有没有比使用循环更有效的方法?
def chromaticity(pixel):
geo_mean = math.pow(sum(pixel),1/3)
return map(lambda x: math.log(x/geo_mean),pixel )
【问题讨论】:
-
可以分享
arbitrary function的实现吗?对于明显的加速,这可能是这里的关键。 -
感谢@Divakar 的评论。任意函数意味着所有函数都传递数组参数并返回一些值。
-
我知道这里的任意函数是什么意思。我的意思是,如果您希望加速某些特定功能,您能否分享它的实现,因为我们可能可以使用 NumPy ufunc 来矢量化该功能所涉及的操作。
-
哦对不起误会了。我的母语不是英语,所以我可能会使用一些奇怪的表达和误解。事实上,我对每个元素数组应用了波纹管
def chromaticity(pixel): geo_mean = math.pow(sum(pixel),1/3) return map(lambda x: math.log(x/geo_mean),pixel )跨度> -
是的,就是那个!那么,您能否编辑您的问题并添加到该功能实现中?
标签: python arrays numpy multidimensional-array vectorization