доступ к столбцам в массиве внутри цикла for - PullRequest
0 голосов
/ 04 января 2012

ниже приведен код для создания нескольких наборов нулей и заполнения его случайными числами, затем я беру первый столбец и вычисляю максимальное значение, проблема в том, что мне нужно иметь возможность сделать это для каждой строки (т.е. строки 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 ]

1 голос
/ 05 января 2012

Если вы ищете максимум строк от 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])

Наконец, как уже показал Ларсман, вы можете использовать mx = np.random.randn(10, 6) сделать случайную матрицу.

1 голос
/ 05 января 2012
import numpy as np
mx = np.random.randn(10, 6)
np.max(mx, axis=0)

Я взял библиотеку использования NumPy вместо Pylab; это то, что Pylab использует внутри, в любом случае. Вы также можете использовать pylab.amax вместо np.max, это точно такая же функция.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...