如何在多维数组上对指定维度子数组批量应用函数
问题:在MxNxK数组的M轴上批量应用函数(避免for循环)
我有一个维度为MxNxK的大型数组,希望遍历M轴,对每个NxK子数组应用函数,同时避免使用for循环。
为说明问题,我构建了一个10x5x4的数组:
import numpy as np data = [] for i in range(1,11): a = np.full(shape=(5,4), fill_value=i) data.append(a) data = np.array(data)
目前我通过循环遍历第一维度,对每个5x4子数组计算求和/均值:
means = [] sums = [] for i in data: means.append(i.sum()) sums.append(i.mean())
实际场景中,我需要处理一个5000x200x20的数组,对每个200x20子数组应用函数,但apply_along_axis似乎无法解决该问题,恳请帮助。
补充说明
针对@chrslg的回复补充信息:我需要在MxNxK数组的每个M子数组上应用概率分布(pdf)和N分位数。测试发现,使用numba首次调用耗时7秒,但后续执行仅需0.77秒;而常规循环遍历M子数组耗时3.9秒。
内容的提问来源于stack exchange,提问作者Arindam
相关产品推荐
相关产品推荐

