我有这样的结构:
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.]])
