访问for循环中的数组内的列

时间:2012-01-04 19:51:18

标签: python arrays numpy matplotlib

下面是创建多组0的代码并用随机数填充它,然后我取第一列并计算最大值,问题是我需要能够为每一行(即第2行)执行此操作通过10) 香港专业教育学院尝试将它放入for循环,但它不适用于传统的y = 1,mx [:,y],y = y + 1

任何人都可以提供一些帮助吗?欢呼声

import pylab

mx = pylab.zeros ((10,6))

for j in range(0,10):
    mx[j] = pylab.randn()

p = mx[:,1]
a = max (p)

2 个答案:

答案 0 :(得分:1)

import numpy as np
mx = np.random.randn(10, 6)
np.max(mx, axis=0)

我已经使用了NumPy而不是Pylab的库;无论如何,这就是Pylab内部使用的内容。您也可以使用pylab.amax代替np.max,这是完全相同的功能。

答案 1 :(得分:1)

如果您要查找 2到10的最大值, 然后使用mx.max(axis=1)查找所有行的最大值,然后将其分解为第2行到第10行:

mx.max(axis=1)[2:]

例如,如果

In [38]: mx = np.arange(60).reshape((10, 6))

In [39]: mx
Out[39]: 
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11],
       [12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23],
       [24, 25, 26, 27, 28, 29],
       [30, 31, 32, 33, 34, 35],
       [36, 37, 38, 39, 40, 41],
       [42, 43, 44, 45, 46, 47],
       [48, 49, 50, 51, 52, 53],
       [54, 55, 56, 57, 58, 59]])

然后

In [40]: mx.max(axis=1)[2:]
Out[40]: array([17, 23, 29, 35, 41, 47, 53, 59])

最后,正如larsman已经展示的那样,你可以使用mx = np.random.randn(10, 6) 制作随机矩阵。