import numpy as np
matrices=[np.random.random((5,5)) for i in range(10)]
np.max(np.hstack(matrices))
将给出n个矩阵的最大值。这基本上是使用np.hstack将matrices中的所有矩阵合并到一个数组中,然后取新数组的最大值。这假设所有矩阵的行数相同。您也可以使用np.vstack或np.concatenate来达到类似的效果。在
编辑我重读了你的问题,你可能真的想要一些更像:
^{pr2}$
这将沿着第三个轴堆叠所有矩阵,然后沿该方向给出最大值,为您的情况返回一个5x5矩阵。在
编辑2以下是一些计时:In [33]: matrices = [np.random.random((5,5)) for i in range(10)]
In [34]: %timeit np.dstack(matrices).max(2)
10000 loops, best of 3: 92.6 us per loop
In [35]: %timeit np.array(matrices).max(axis=0)
10000 loops, best of 3: 90.9 us per loop
In [36]: %timeit reduce(np.maximum, matrices)
10000 loops, best of 3: 25.8 us per loop
对于一些较大的阵列:In [37]: matrices = [np.random.random((200,200)) for i in range(100)]
In [38]: %timeit np.dstack(matrices).max(2)
10 loops, best of 3: 111 ms per loop
In [39]: %timeit np.array(matrices).max(axis=0)
1 loops, best of 3: 697 ms per loop
In [40]: %timeit reduce(np.maximum, matrices)
100 loops, best of 3: 12.7 ms per loop
史蒂文赢了!在