Skip to main content
 首页 » 编程设计

python之数组数组的平均值

2025年05月04日15zhujiabin

我有这样的结构:

a = np.array([[np.array([1,2,3]), np.array([2])], [np.array([0,1,2,3,4]), np.array([0,4])]]) 

它是一个2x2的结构,每个元素可以有任意维度

我想得到a的每个元素的平均值:

np.mean(a) 
 
ValueError: operands could not be broadcast together with shapes (3) (5)  

我尝试使用 axis,但它不起作用。我想得到一个等于 [[2, 2], [2, 2] 的新 np.array。

一般来说,我希望能够以相同的方式在 a 上运行任何矢量化函数。

怎么做?我需要快速的代码,所以请避免显式循环。

我能做的最好的是:

f = np.mean 
result = np.zeros(a.shape) 
for i in np.ndindex(a.shape): 
  result[i] = f(a[i]) 

请您参考如下方法:

我猜你想要 numpy.vectorize这基本上类似于 ndarrays 的内置 map。

>>> a = np.array([[np.array([1,2,3]), np.array([2])], [np.array([0,1,2,3,4]), np.array([0,4])]]) 
>>> vmean = np.vectorize(np.mean) 
>>> vmean(a) 
array([[ 2.,  2.], 
       [ 2.,  2.]])