python矩阵最大值,在Python/Numpy中如何获得n个矩阵元素的最大值的最有效方法

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

史蒂文赢了!在

你可能感兴趣的:(python矩阵最大值)